A methodical makeover for CTDB Martin Schwenke < martin@meltin.net - - PowerPoint PPT Presentation

a methodical makeover for ctdb
SMART_READER_LITE
LIVE PREVIEW

A methodical makeover for CTDB Martin Schwenke < martin@meltin.net - - PowerPoint PPT Presentation

A methodical makeover for CTDB Martin Schwenke < martin@meltin.net > Amitay Isaacs < amitay@samba.org > Samba Team IBM (Australia Development Laboratory, Linux Technology Center) Martin Schwenke, Amitay Isaacs A methodical makeover


slide-1
SLIDE 1

A methodical makeover for CTDB

Martin Schwenke <martin@meltin.net> Amitay Isaacs <amitay@samba.org>

Samba Team IBM (Australia Development Laboratory, Linux Technology Center)

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-2
SLIDE 2

Functionality and current architecture

What does CTDB do?

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-3
SLIDE 3

Functionality and current architecture

Functionality

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-4
SLIDE 4

Functionality and current architecture

Functionality Cluster membership and leadership

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-5
SLIDE 5

Functionality and current architecture

Functionality Cluster membership and leadership Cluster database and database recovery

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-6
SLIDE 6

Functionality and current architecture

Functionality Cluster membership and leadership Cluster database and database recovery Cluster-wide messaging transport for Samba

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-7
SLIDE 7

Functionality and current architecture

Functionality Cluster membership and leadership Cluster database and database recovery Cluster-wide messaging transport for Samba Service management and monitoring

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-8
SLIDE 8

Functionality and current architecture

Functionality Cluster membership and leadership Cluster database and database recovery Cluster-wide messaging transport for Samba Service management and monitoring IP address management, failover and consistency checking

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-9
SLIDE 9

Functionality and current architecture

Functionality Cluster membership and leadership Cluster database and database recovery Cluster-wide messaging transport for Samba Service management and monitoring IP address management, failover and consistency checking Logging

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-10
SLIDE 10

Functionality and current architecture

Current architecture

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-11
SLIDE 11

Functionality and current architecture

Current architecture CTDB daemons Processes that exist for the lifetime of CTDB

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-12
SLIDE 12

Functionality and current architecture

Current architecture CTDB daemons Processes that exist for the lifetime of CTDB Main daemon Recovery daemon Logging daemon

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-13
SLIDE 13

Functionality and current architecture

Current architecture CTDB daemons Processes that exist for the lifetime of CTDB Main daemon Recovery daemon Logging daemon CTDB processes Ephemeral processes to avoid blocking the main daemon

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-14
SLIDE 14

Functionality and current architecture

Current architecture CTDB daemons Processes that exist for the lifetime of CTDB Main daemon Recovery daemon Logging daemon CTDB processes Ephemeral processes to avoid blocking the main daemon Lock helper Event helper Vacuuming Persistent transaction Read-only record revocation State change notification Recovery lock sanity check Reloading public IP address configuration Database traverse

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-15
SLIDE 15

Functionality and current architecture

Mapping function to daemon

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-16
SLIDE 16

Functionality and current architecture

Mapping function to daemon Main daemon Recovery daemon Logging daemon

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-17
SLIDE 17

Functionality and current architecture

Mapping function to daemon Main daemon Cluster membership Recovery daemon Cluster leadership Logging daemon

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-18
SLIDE 18

Functionality and current architecture

Mapping function to daemon Main daemon Cluster membership Cluster database access Recovery daemon Cluster leadership Cluster database recovery Logging daemon

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-19
SLIDE 19

Functionality and current architecture

Mapping function to daemon Main daemon Cluster membership Cluster database access Cluster wide messaging transport Recovery daemon Cluster leadership Cluster database recovery Logging daemon

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-20
SLIDE 20

Functionality and current architecture

Mapping function to daemon Main daemon Cluster membership Cluster database access Cluster wide messaging transport Public IP address management Recovery daemon Cluster leadership Cluster database recovery Public IP address failover and consistency checking Logging daemon

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-21
SLIDE 21

Functionality and current architecture

Mapping function to daemon Main daemon Cluster membership Cluster database access Cluster wide messaging transport Public IP address management Service management Recovery daemon Cluster leadership Cluster database recovery Public IP address failover and consistency checking Logging daemon

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-22
SLIDE 22

Functionality and current architecture

Mapping function to daemon Main daemon Cluster membership Cluster database access Cluster wide messaging transport Public IP address management Service management Recovery daemon Cluster leadership Cluster database recovery Public IP address failover and consistency checking Logging daemon Logging :-)

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-23
SLIDE 23

Why makeover?

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-24
SLIDE 24

Why makeover?

It’s time

Not a proof of concept anymore . . .

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-25
SLIDE 25

Why makeover?

It’s time

Not a proof of concept anymore . . .

Limitations imposed by design and implementation

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-26
SLIDE 26

Why makeover?

It’s time

Not a proof of concept anymore . . .

Limitations imposed by design and implementation Organic Growth

Hacks and band-aids

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-27
SLIDE 27

Why makeover?

It’s time

Not a proof of concept anymore . . .

Limitations imposed by design and implementation Organic Growth

Hacks and band-aids

Re-factoring?

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-28
SLIDE 28

Why makeover?

It’s time

Not a proof of concept anymore . . .

Limitations imposed by design and implementation Organic Growth

Hacks and band-aids

Re-factoring?

Easy way to introduce new abstractions (e.g. message lists, locking)

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-29
SLIDE 29

Why makeover?

It’s time

Not a proof of concept anymore . . .

Limitations imposed by design and implementation Organic Growth

Hacks and band-aids

Re-factoring?

Easy way to introduce new abstractions (e.g. message lists, locking) Can be challenging (e.g. protocol code in CTDB/Samba)

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-30
SLIDE 30

Why makeover?

It’s time

Not a proof of concept anymore . . .

Limitations imposed by design and implementation Organic Growth

Hacks and band-aids

Re-factoring?

Easy way to introduce new abstractions (e.g. message lists, locking) Can be challenging (e.g. protocol code in CTDB/Samba)

Itch to re-design everything

Every new developer’s approach . . .

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-31
SLIDE 31

Why makeover?

It’s time

Not a proof of concept anymore . . .

Limitations imposed by design and implementation Organic Growth

Hacks and band-aids

Re-factoring?

Easy way to introduce new abstractions (e.g. message lists, locking) Can be challenging (e.g. protocol code in CTDB/Samba)

Itch to re-design everything

Every new developer’s approach . . . Some problems can be designed away

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-32
SLIDE 32

Why makeover?

It’s time

Not a proof of concept anymore . . .

Limitations imposed by design and implementation Organic Growth

Hacks and band-aids

Re-factoring?

Easy way to introduce new abstractions (e.g. message lists, locking) Can be challenging (e.g. protocol code in CTDB/Samba)

Itch to re-design everything

Every new developer’s approach . . . Some problems can be designed away Daunting task to ensure no knowledge is lost (e.g. database vacuuming and recovery interactions)

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-33
SLIDE 33

Limitations: Design

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-34
SLIDE 34

Limitations: Design

Main daemon and recovery daemon overloaded

Mix of time critical and non-critical in single daemon Difficult to maintain in asynchronous, non-blocking design

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-35
SLIDE 35

Limitations: Design

Main daemon and recovery daemon overloaded

Mix of time critical and non-critical in single daemon Difficult to maintain in asynchronous, non-blocking design

Communication bottleneck

All messages must pass through (single threaded) main daemon

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-36
SLIDE 36

Limitations: Design

Main daemon and recovery daemon overloaded

Mix of time critical and non-critical in single daemon Difficult to maintain in asynchronous, non-blocking design

Communication bottleneck

All messages must pass through (single threaded) main daemon

Cluster leader election

Each node tries to become leader on starting up

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-37
SLIDE 37

Limitations: Design

Main daemon and recovery daemon overloaded

Mix of time critical and non-critical in single daemon Difficult to maintain in asynchronous, non-blocking design

Communication bottleneck

All messages must pass through (single threaded) main daemon

Cluster leader election

Each node tries to become leader on starting up Does not scale with number of nodes!

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-38
SLIDE 38

Limitations: Design

Main daemon and recovery daemon overloaded

Mix of time critical and non-critical in single daemon Difficult to maintain in asynchronous, non-blocking design

Communication bottleneck

All messages must pass through (single threaded) main daemon

Cluster leader election

Each node tries to become leader on starting up Does not scale with number of nodes!

Database recovery

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-39
SLIDE 39

Limitations: Design

Main daemon and recovery daemon overloaded

Mix of time critical and non-critical in single daemon Difficult to maintain in asynchronous, non-blocking design

Communication bottleneck

All messages must pass through (single threaded) main daemon

Cluster leader election

Each node tries to become leader on starting up Does not scale with number of nodes!

Database recovery

Cluster leader recovers databases one at a time

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-40
SLIDE 40

Limitations: Design

Main daemon and recovery daemon overloaded

Mix of time critical and non-critical in single daemon Difficult to maintain in asynchronous, non-blocking design

Communication bottleneck

All messages must pass through (single threaded) main daemon

Cluster leader election

Each node tries to become leader on starting up Does not scale with number of nodes!

Database recovery

Cluster leader recovers databases one at a time

Centralised state

Some state is in main daemon but is used in recovery daemon

Tight coupling

Membership, service health, IP allocation are tightly coupled

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-41
SLIDE 41

Limitations: Implementation

Protocol is “structs on the wire”

32-bit vs 64-bit, not endian-neutral

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-42
SLIDE 42

Limitations: Implementation

Protocol is “structs on the wire”

32-bit vs 64-bit, not endian-neutral Hand-marshalling of structures

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-43
SLIDE 43

Limitations: Implementation

Protocol is “structs on the wire”

32-bit vs 64-bit, not endian-neutral Hand-marshalling of structures

Simpler protocol – single packet request/response

Streams / Large packets (e.g. multiple database records)

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-44
SLIDE 44

Limitations: Implementation

Protocol is “structs on the wire”

32-bit vs 64-bit, not endian-neutral Hand-marshalling of structures

Simpler protocol – single packet request/response

Streams / Large packets (e.g. multiple database records) Large data buffer (talloc), Large send/recv (socket handling)

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-45
SLIDE 45

Limitations: Implementation

Protocol is “structs on the wire”

32-bit vs 64-bit, not endian-neutral Hand-marshalling of structures

Simpler protocol – single packet request/response

Streams / Large packets (e.g. multiple database records) Large data buffer (talloc), Large send/recv (socket handling)

No (internal) messaging framework

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-46
SLIDE 46

Limitations: Implementation

Protocol is “structs on the wire”

32-bit vs 64-bit, not endian-neutral Hand-marshalling of structures

Simpler protocol – single packet request/response

Streams / Large packets (e.g. multiple database records) Large data buffer (talloc), Large send/recv (socket handling)

No (internal) messaging framework

Fire-and-forget method of communication with recovery daemon

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-47
SLIDE 47

Limitations: Implementation

Protocol is “structs on the wire”

32-bit vs 64-bit, not endian-neutral Hand-marshalling of structures

Simpler protocol – single packet request/response

Streams / Large packets (e.g. multiple database records) Large data buffer (talloc), Large send/recv (socket handling)

No (internal) messaging framework

Fire-and-forget method of communication with recovery daemon

Unstructured CLI and configuration

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-48
SLIDE 48

Limitations: Implementation

Protocol is “structs on the wire”

32-bit vs 64-bit, not endian-neutral Hand-marshalling of structures

Simpler protocol – single packet request/response

Streams / Large packets (e.g. multiple database records) Large data buffer (talloc), Large send/recv (socket handling)

No (internal) messaging framework

Fire-and-forget method of communication with recovery daemon

Unstructured CLI and configuration Need to re-design Scalability, Maintainability

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-49
SLIDE 49

Component: Logging daemon

Motivation What is the smallest chunk that can be split as a separate daemon?

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-50
SLIDE 50

Component: Logging daemon

Motivation What is the smallest chunk that can be split as a separate daemon? Logging daemon Self-contained code Can be used as a template for other daemons Looks simple enough. . .

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-51
SLIDE 51

Component: Logging daemon

Before: Custom logging daemon

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-52
SLIDE 52

Component: Logging daemon

Before: Custom logging daemon Why? syslog(3) blocks when syslog daemon gets busy What? Log each received message using syslog(3) How? Custom UDP protocol

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-53
SLIDE 53

Component: Logging daemon

Before: Custom logging daemon Why? syslog(3) blocks when syslog daemon gets busy What? Log each received message using syslog(3) How? Custom UDP protocol Problems

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-54
SLIDE 54

Component: Logging daemon

Before: Custom logging daemon Why? syslog(3) blocks when syslog daemon gets busy What? Log each received message using syslog(3) How? Custom UDP protocol Problems Only used when syslog enabled, not file logging File logging can block too!

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-55
SLIDE 55

Component: Logging daemon

Before: Custom logging daemon Why? syslog(3) blocks when syslog daemon gets busy What? Log each received message using syslog(3) How? Custom UDP protocol Problems Only used when syslog enabled, not file logging File logging can block too! Protocol is “structs on the wire”

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-56
SLIDE 56

Component: Logging daemon

Before: Custom logging daemon Why? syslog(3) blocks when syslog daemon gets busy What? Log each received message using syslog(3) How? Custom UDP protocol Problems Only used when syslog enabled, not file logging File logging can block too! Protocol is “structs on the wire” After?

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-57
SLIDE 57

Component: Logging daemon

Before: Custom logging daemon Why? syslog(3) blocks when syslog daemon gets busy What? Log each received message using syslog(3) How? Custom UDP protocol Problems Only used when syslog enabled, not file logging File logging can block too! Protocol is “structs on the wire” After? Shiny new daemon with well-defined protocol. . .

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-58
SLIDE 58

Component: Logging daemon

Before: Custom logging daemon Why? syslog(3) blocks when syslog daemon gets busy What? Log each received message using syslog(3) How? Custom UDP protocol Problems Only used when syslog enabled, not file logging File logging can block too! Protocol is “structs on the wire” After? Shiny new daemon with well-defined protocol. . . . . . that handles all logging

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-59
SLIDE 59

Component: Logging daemon

The big idea!

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-60
SLIDE 60

Component: Logging daemon

The big idea! Create an asynchronous framework for CTDB daemons!

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-61
SLIDE 61

Component: Logging daemon

The big idea! Create an asynchronous framework for CTDB daemons! Use Samba’s tevent_req framework!

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-62
SLIDE 62

Component: Logging daemon

The big idea! Create an asynchronous framework for CTDB daemons! Use Samba’s tevent_req framework! Define protocol and auto-generate marshalling code!

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-63
SLIDE 63

Component: Logging daemon

The big idea! Create an asynchronous framework for CTDB daemons! Use Samba’s tevent_req framework! Define protocol and auto-generate marshalling code! Use all this to write logging daemon (as a template)!

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-64
SLIDE 64

Component: Logging daemon

The big idea! Create an asynchronous framework for CTDB daemons! Use Samba’s tevent_req framework! Define protocol and auto-generate marshalling code! Use all this to write logging daemon (as a template)! And then use the template for writing other daemons!

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-65
SLIDE 65

Component: Logging daemon

The big idea! Create an asynchronous framework for CTDB daemons! Use Samba’s tevent_req framework! Define protocol and auto-generate marshalling code! Use all this to write logging daemon (as a template)! And then use the template for writing other daemons! The big problem! Logging is hard! How do you handle errors in logging daemon?

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-66
SLIDE 66

Component: Logging daemon

The big idea! Create an asynchronous framework for CTDB daemons! Use Samba’s tevent_req framework! Define protocol and auto-generate marshalling code! Use all this to write logging daemon (as a template)! And then use the template for writing other daemons! The big problem! Logging is hard! How do you handle errors in logging daemon? The better idea! We’re not in the logging business . . . daemons already exist!

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-67
SLIDE 67

Component: Logging daemon

The big idea! Create an asynchronous framework for CTDB daemons! Use Samba’s tevent_req framework! Define protocol and auto-generate marshalling code! Use all this to write logging daemon (as a template)! And then use the template for writing other daemons! The big problem! Logging is hard! How do you handle errors in logging daemon? The better idea! We’re not in the logging business . . . daemons already exist! Use RFC5424 message format

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-68
SLIDE 68

Component: Logging daemon

The big idea! Create an asynchronous framework for CTDB daemons! Use Samba’s tevent_req framework! Define protocol and auto-generate marshalling code! Use all this to write logging daemon (as a template)! And then use the template for writing other daemons! The big problem! Logging is hard! How do you handle errors in logging daemon? The better idea! We’re not in the logging business . . . daemons already exist! Use RFC5424 message format Transmit via UDP as per RFC5426

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-69
SLIDE 69

Component: Logging daemon

So, how did that work out?

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-70
SLIDE 70

Component: Logging daemon

So, how did that work out? First Linux version quite easy but not merged because. . .

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-71
SLIDE 71

Component: Logging daemon

So, how did that work out? First Linux version quite easy but not merged because. . . Unified Samba/CTDB build coming up (see later)

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-72
SLIDE 72

Component: Logging daemon

So, how did that work out? First Linux version quite easy but not merged because. . . Unified Samba/CTDB build coming up (see later) Samba’s debug.{ch} is completely different to CTDB’s

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-73
SLIDE 73

Component: Logging daemon

So, how did that work out? First Linux version quite easy but not merged because. . . Unified Samba/CTDB build coming up (see later) Samba’s debug.{ch} is completely different to CTDB’s Spend a month completing the unified build

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-74
SLIDE 74

Component: Logging daemon

So, how did that work out? First Linux version quite easy but not merged because. . . Unified Samba/CTDB build coming up (see later) Samba’s debug.{ch} is completely different to CTDB’s Spend a month completing the unified build Send to Unix domain socket in non-blocking mode?

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-75
SLIDE 75

Component: Logging daemon

So, how did that work out? First Linux version quite easy but not merged because. . . Unified Samba/CTDB build coming up (see later) Samba’s debug.{ch} is completely different to CTDB’s Spend a month completing the unified build Send to Unix domain socket in non-blocking mode? rsyslogd doesn’t speak RFC5424 on Unix domain socket?

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-76
SLIDE 76

Component: Logging daemon

So, how did that work out? First Linux version quite easy but not merged because. . . Unified Samba/CTDB build coming up (see later) Samba’s debug.{ch} is completely different to CTDB’s Spend a month completing the unified build Send to Unix domain socket in non-blocking mode? rsyslogd doesn’t speak RFC5424 on Unix domain socket? Learn about RFC3164!

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-77
SLIDE 77

Component: Logging daemon

So, how did that work out? First Linux version quite easy but not merged because. . . Unified Samba/CTDB build coming up (see later) Samba’s debug.{ch} is completely different to CTDB’s Spend a month completing the unified build Send to Unix domain socket in non-blocking mode? rsyslogd doesn’t speak RFC5424 on Unix domain socket? Learn about RFC3164! Location of socket is not standardised

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-78
SLIDE 78

Component: Logging daemon

So, how did that work out? First Linux version quite easy but not merged because. . . Unified Samba/CTDB build coming up (see later) Samba’s debug.{ch} is completely different to CTDB’s Spend a month completing the unified build Send to Unix domain socket in non-blocking mode? rsyslogd doesn’t speak RFC5424 on Unix domain socket? Learn about RFC3164! Location of socket is not standardised Much of RFC3164 is only recommended. . .

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-79
SLIDE 79

Component: Logging daemon

So, how did that work out? First Linux version quite easy but not merged because. . . Unified Samba/CTDB build coming up (see later) Samba’s debug.{ch} is completely different to CTDB’s Spend a month completing the unified build Send to Unix domain socket in non-blocking mode? rsyslogd doesn’t speak RFC5424 on Unix domain socket? Learn about RFC3164! Location of socket is not standardised Much of RFC3164 is only recommended. . . . . . and sometimes not supported

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-80
SLIDE 80

Component: Logging daemon

So, how did that work out? First Linux version quite easy but not merged because. . . Unified Samba/CTDB build coming up (see later) Samba’s debug.{ch} is completely different to CTDB’s Spend a month completing the unified build Send to Unix domain socket in non-blocking mode? rsyslogd doesn’t speak RFC5424 on Unix domain socket? Learn about RFC3164! Location of socket is not standardised Much of RFC3164 is only recommended. . . . . . and sometimes not supported FreeBSD supports RFC3164, not RFC5424, over UDP

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-81
SLIDE 81

Component: Logging daemon

So, how did that work out? First Linux version quite easy but not merged because. . . Unified Samba/CTDB build coming up (see later) Samba’s debug.{ch} is completely different to CTDB’s Spend a month completing the unified build Send to Unix domain socket in non-blocking mode? rsyslogd doesn’t speak RFC5424 on Unix domain socket? Learn about RFC3164! Location of socket is not standardised Much of RFC3164 is only recommended. . . . . . and sometimes not supported FreeBSD supports RFC3164, not RFC5424, over UDP Tear out hair. . .

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-82
SLIDE 82

Component: Logging daemon

CTDB logging=syslog* options syslog Use syslog(3) syslog:nonblocking RFC3164 to Unix domain socket syslog:udp RFC3164 to UDP socket syslog:udp-rfc5424 RFC5424 to UDP socket (RFC5426)

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-83
SLIDE 83

Component: Logging daemon

CTDB logging=syslog* options syslog Use syslog(3) syslog:nonblocking RFC3164 to Unix domain socket syslog:udp RFC3164 to UDP socket syslog:udp-rfc5424 RFC5424 to UDP socket (RFC5426) After

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-84
SLIDE 84

Component: Logging daemon

CTDB logging=syslog* options syslog Use syslog(3) syslog:nonblocking RFC3164 to Unix domain socket syslog:udp RFC3164 to UDP socket syslog:udp-rfc5424 RFC5424 to UDP socket (RFC5426) After A lot of time passed. . . more than 12 months

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-85
SLIDE 85

Component: Logging daemon

CTDB logging=syslog* options syslog Use syslog(3) syslog:nonblocking RFC3164 to Unix domain socket syslog:udp RFC3164 to UDP socket syslog:udp-rfc5424 RFC5424 to UDP socket (RFC5426) After A lot of time passed. . . more than 12 months Above merged into (Samba) master branch

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-86
SLIDE 86

Component: Logging daemon

CTDB logging=syslog* options syslog Use syslog(3) syslog:nonblocking RFC3164 to Unix domain socket syslog:udp RFC3164 to UDP socket syslog:udp-rfc5424 RFC5424 to UDP socket (RFC5426) After A lot of time passed. . . more than 12 months Above merged into (Samba) master branch Retired from the logging business

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-87
SLIDE 87

Component: Logging daemon

CTDB logging=syslog* options syslog Use syslog(3) syslog:nonblocking RFC3164 to Unix domain socket syslog:udp RFC3164 to UDP socket syslog:udp-rfc5424 RFC5424 to UDP socket (RFC5426) After A lot of time passed. . . more than 12 months Above merged into (Samba) master branch Retired from the logging business Future? Promote some of this to Samba’s debug.{ch}

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-88
SLIDE 88

New design

Motivation Separate functionality in individual daemons

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-89
SLIDE 89

New design

Motivation Separate functionality in individual daemons Design Public IP address daemon Service management daemon Cluster management daemon Database daemon . . .

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-90
SLIDE 90

New design: Public IP address daemon

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-91
SLIDE 91

New design: Public IP address daemon

Single daemon with public IP address:

Management Failover Consistency checking

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-92
SLIDE 92

New design: Public IP address daemon

Single daemon with public IP address:

Management Failover Consistency checking

Simple management and status CLI

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-93
SLIDE 93

New design: Public IP address daemon

Single daemon with public IP address:

Management Failover Consistency checking

Simple management and status CLI Simple IP (re)allocation trigger:

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-94
SLIDE 94

New design: Public IP address daemon

Single daemon with public IP address:

Management Failover Consistency checking

Simple management and status CLI Simple IP (re)allocation trigger:

Simple CLI command: these nodes can host addresses

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-95
SLIDE 95

New design: Public IP address daemon

Single daemon with public IP address:

Management Failover Consistency checking

Simple management and status CLI Simple IP (re)allocation trigger:

Simple CLI command: these nodes can host addresses Callback from other daemons when status changes

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-96
SLIDE 96

New design: Public IP address daemon

Single daemon with public IP address:

Management Failover Consistency checking

Simple management and status CLI Simple IP (re)allocation trigger:

Simple CLI command: these nodes can host addresses Callback from other daemons when status changes Callback can be a script that gathers extra status data. For example, cluster membership and/or service health status.

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-97
SLIDE 97

New design: Public IP address daemon

Single daemon with public IP address:

Management Failover Consistency checking

Simple management and status CLI Simple IP (re)allocation trigger:

Simple CLI command: these nodes can host addresses Callback from other daemons when status changes Callback can be a script that gathers extra status data. For example, cluster membership and/or service health status.

An interface like this should also allow support for LVS, HAProxy, . . .

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-98
SLIDE 98

New design: Service management daemon

Four functions:

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-99
SLIDE 99

New design: Service management daemon

Four functions:

Startup

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-100
SLIDE 100

New design: Service management daemon

Four functions:

Startup Shutdown

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-101
SLIDE 101

New design: Service management daemon

Four functions:

Startup Shutdown Health monitoring

Public IP address daemon callback(s) registered to be run on state changes

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-102
SLIDE 102

New design: Service management daemon

Four functions:

Startup Shutdown Health monitoring

Public IP address daemon callback(s) registered to be run on state changes

Reconfiguration when IP addresses change

What addresses should services no longer listen on? What addresses should services listen on?

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-103
SLIDE 103

New design: Service management daemon

Four functions:

Startup Shutdown Health monitoring

Public IP address daemon callback(s) registered to be run on state changes

Reconfiguration when IP addresses change

What addresses should services no longer listen on? What addresses should services listen on?

Could we also support something like Pacemaker?

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-104
SLIDE 104

New design: Cluster management daemon

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-105
SLIDE 105

New design: Cluster management daemon

Membership: Connected according to heartbeat or similar Active if not banned, administratively stopped

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-106
SLIDE 106

New design: Cluster management daemon

Membership: Connected according to heartbeat or similar Active if not banned, administratively stopped Leadership

Coordinates database recovery Coordinates public IP address (re)allocation

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-107
SLIDE 107

New design: Cluster management daemon

Membership: Connected according to heartbeat or similar Active if not banned, administratively stopped Leadership

Coordinates database recovery Coordinates public IP address (re)allocation

Callbacks registered for state changes

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-108
SLIDE 108

New design: Cluster management daemon

Membership: Connected according to heartbeat or similar Active if not banned, administratively stopped Leadership

Coordinates database recovery Coordinates public IP address (re)allocation

Callbacks registered for state changes Can we support Heartbeat, etcd (or similar) as an alternative?

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-109
SLIDE 109

New design: Database daemon

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-110
SLIDE 110

New design: Database daemon

After separating everything else, this is what should remain of the current main daemon.

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-111
SLIDE 111

New design: Database daemon

After separating everything else, this is what should remain of the current main daemon. The main focus of CTDB

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-112
SLIDE 112

New design: Database daemon

After separating everything else, this is what should remain of the current main daemon. The main focus of CTDB Functions:

Database operations Recovery Vacuuming (garbage collection)

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-113
SLIDE 113

New design: Messaging

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-114
SLIDE 114

New design: Messaging

Scalable messaging with multiple daemons across multiple nodes

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-115
SLIDE 115

New design: Messaging

Scalable messaging with multiple daemons across multiple nodes Using Samba’s Unix domain datagram sockets

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-116
SLIDE 116

New design: Messaging

Scalable messaging with multiple daemons across multiple nodes Using Samba’s Unix domain datagram sockets

Avoids establishing a connection

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-117
SLIDE 117

New design: Messaging

Scalable messaging with multiple daemons across multiple nodes Using Samba’s Unix domain datagram sockets

Avoids establishing a connection Each daemon has to listen only on a single socket

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-118
SLIDE 118

New design: Messaging

Scalable messaging with multiple daemons across multiple nodes Using Samba’s Unix domain datagram sockets

Avoids establishing a connection Each daemon has to listen only on a single socket Need to find sender’s socket to send reply

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-119
SLIDE 119

New design: Messaging

Scalable messaging with multiple daemons across multiple nodes Using Samba’s Unix domain datagram sockets

Avoids establishing a connection Each daemon has to listen only on a single socket Need to find sender’s socket to send reply

How to identify a specific deamon / process on a specific node?

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-120
SLIDE 120

Status

Question We didn’t get all of this done, did we?

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-121
SLIDE 121

Distractions

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-122
SLIDE 122

Distractions

CTDB

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-123
SLIDE 123

Distractions

CTDB

Framework, experiments with logging daemon, . . .

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-124
SLIDE 124

Distractions

CTDB

Framework, experiments with logging daemon, . . . Unified Samba/CTDB tree and build

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-125
SLIDE 125

Distractions

CTDB

Framework, experiments with logging daemon, . . . Unified Samba/CTDB tree and build Portability (Linux on Power, AIX, FreeBSD)

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-126
SLIDE 126

Distractions

CTDB

Framework, experiments with logging daemon, . . . Unified Samba/CTDB tree and build Portability (Linux on Power, AIX, FreeBSD) Performance: lock scheduling

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-127
SLIDE 127

Distractions

CTDB

Framework, experiments with logging daemon, . . . Unified Samba/CTDB tree and build Portability (Linux on Power, AIX, FreeBSD) Performance: lock scheduling Fix IPv6 support

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-128
SLIDE 128

Distractions

CTDB

Framework, experiments with logging daemon, . . . Unified Samba/CTDB tree and build Portability (Linux on Power, AIX, FreeBSD) Performance: lock scheduling Fix IPv6 support

Autocluster

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-129
SLIDE 129

Distractions

CTDB

Framework, experiments with logging daemon, . . . Unified Samba/CTDB tree and build Portability (Linux on Power, AIX, FreeBSD) Performance: lock scheduling Fix IPv6 support

Autocluster

Create virtual RHEL/CentOS libvirt/KVM clusters. . .

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-130
SLIDE 130

Distractions

CTDB

Framework, experiments with logging daemon, . . . Unified Samba/CTDB tree and build Portability (Linux on Power, AIX, FreeBSD) Performance: lock scheduling Fix IPv6 support

Autocluster

Create virtual RHEL/CentOS libvirt/KVM clusters. . . . . . for testing clustered Samba

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-131
SLIDE 131

Distractions

CTDB

Framework, experiments with logging daemon, . . . Unified Samba/CTDB tree and build Portability (Linux on Power, AIX, FreeBSD) Performance: lock scheduling Fix IPv6 support

Autocluster

Create virtual RHEL/CentOS libvirt/KVM clusters. . . . . . for testing clustered Samba Written in bash(1) since 2008!

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-132
SLIDE 132

Distractions

CTDB

Framework, experiments with logging daemon, . . . Unified Samba/CTDB tree and build Portability (Linux on Power, AIX, FreeBSD) Performance: lock scheduling Fix IPv6 support

Autocluster

Create virtual RHEL/CentOS libvirt/KVM clusters. . . . . . for testing clustered Samba Written in bash(1) since 2008! See LCA2009 presentation with Tridge

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-133
SLIDE 133

Distractions

CTDB

Framework, experiments with logging daemon, . . . Unified Samba/CTDB tree and build Portability (Linux on Power, AIX, FreeBSD) Performance: lock scheduling Fix IPv6 support

Autocluster

Create virtual RHEL/CentOS libvirt/KVM clusters. . . . . . for testing clustered Samba Written in bash(1) since 2008! See LCA2009 presentation with Tridge RHEL 7 support

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-134
SLIDE 134

Distractions

CTDB

Framework, experiments with logging daemon, . . . Unified Samba/CTDB tree and build Portability (Linux on Power, AIX, FreeBSD) Performance: lock scheduling Fix IPv6 support

Autocluster

Create virtual RHEL/CentOS libvirt/KVM clusters. . . . . . for testing clustered Samba Written in bash(1) since 2008! See LCA2009 presentation with Tridge RHEL 7 support Modularisation

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-135
SLIDE 135

Distractions

CTDB

Framework, experiments with logging daemon, . . . Unified Samba/CTDB tree and build Portability (Linux on Power, AIX, FreeBSD) Performance: lock scheduling Fix IPv6 support

Autocluster

Create virtual RHEL/CentOS libvirt/KVM clusters. . . . . . for testing clustered Samba Written in bash(1) since 2008! See LCA2009 presentation with Tridge RHEL 7 support Modularisation IPv6 support

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-136
SLIDE 136

Distractions

CTDB

Framework, experiments with logging daemon, . . . Unified Samba/CTDB tree and build Portability (Linux on Power, AIX, FreeBSD) Performance: lock scheduling Fix IPv6 support

Autocluster

Create virtual RHEL/CentOS libvirt/KVM clusters. . . . . . for testing clustered Samba Written in bash(1) since 2008! See LCA2009 presentation with Tridge RHEL 7 support Modularisation IPv6 support git://git.samba.org/autocluster.git

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-137
SLIDE 137

But wait, there’s more. . .

Well, not a lot more, but a little more. . .

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-138
SLIDE 138

Beginning of a makeover

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-139
SLIDE 139

Beginning of a makeover

Lots of re-design, lots of work

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-140
SLIDE 140

Beginning of a makeover

Lots of re-design, lots of work Start with a clean slate?

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-141
SLIDE 141

Beginning of a makeover

Lots of re-design, lots of work Start with a clean slate?

Sounds good, but a huge step to get working code

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-142
SLIDE 142

Beginning of a makeover

Lots of re-design, lots of work Start with a clean slate?

Sounds good, but a huge step to get working code Limited development team

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-143
SLIDE 143

Beginning of a makeover

Lots of re-design, lots of work Start with a clean slate?

Sounds good, but a huge step to get working code Limited development team

Incremental updates

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-144
SLIDE 144

Beginning of a makeover

Lots of re-design, lots of work Start with a clean slate?

Sounds good, but a huge step to get working code Limited development team

Incremental updates

Harness existing testing infrastructure

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-145
SLIDE 145

Beginning of a makeover

Lots of re-design, lots of work Start with a clean slate?

Sounds good, but a huge step to get working code Limited development team

Incremental updates

Harness existing testing infrastructure Will require throw-away glue code

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-146
SLIDE 146

Beginning of a makeover

Lots of re-design, lots of work Start with a clean slate?

Sounds good, but a huge step to get working code Limited development team

Incremental updates

Harness existing testing infrastructure Will require throw-away glue code Where to start?

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-147
SLIDE 147

Beginning of a makeover

Lots of re-design, lots of work Start with a clean slate?

Sounds good, but a huge step to get working code Limited development team

Incremental updates

Harness existing testing infrastructure Will require throw-away glue code Where to start?

Protocol handling Samba and CTDB have separate implementation of protocol

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-148
SLIDE 148

Makeover: Protocol handling

Implement libctdb

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-149
SLIDE 149

Makeover: Protocol handling

Implement libctdb But wait, wasn’t there a libctdb already?

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-150
SLIDE 150

Makeover: Protocol handling

Implement libctdb But wait, wasn’t there a libctdb already?

Implemented few messages, but not database operations

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-151
SLIDE 151

Makeover: Protocol handling

Implement libctdb But wait, wasn’t there a libctdb already?

Implemented few messages, but not database operations Provided mostly synchronous and some asynchronous API

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-152
SLIDE 152

Makeover: Protocol handling

Implement libctdb But wait, wasn’t there a libctdb already?

Implemented few messages, but not database operations Provided mostly synchronous and some asynchronous API Hard to get thread-safe asynchronous API right

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-153
SLIDE 153

Makeover: Protocol handling

Implement libctdb But wait, wasn’t there a libctdb already?

Implemented few messages, but not database operations Provided mostly synchronous and some asynchronous API Hard to get thread-safe asynchronous API right No consumers for libctdb (partial use by ctdb CLI)

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-154
SLIDE 154

Makeover: Protocol handling

Implement libctdb But wait, wasn’t there a libctdb already?

Implemented few messages, but not database operations Provided mostly synchronous and some asynchronous API Hard to get thread-safe asynchronous API right No consumers for libctdb (partial use by ctdb CLI)

Implement libctdbapi

CTDB protocol marshalling API (client and server)

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-155
SLIDE 155

Makeover: Protocol handling

Implement libctdb But wait, wasn’t there a libctdb already?

Implemented few messages, but not database operations Provided mostly synchronous and some asynchronous API Hard to get thread-safe asynchronous API right No consumers for libctdb (partial use by ctdb CLI)

Implement libctdbapi

CTDB protocol marshalling API (client and server) Rewrite Samba’s CTDB interface using libctdbapi

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-156
SLIDE 156

Makeover: Protocol handling

Implement libctdb But wait, wasn’t there a libctdb already?

Implemented few messages, but not database operations Provided mostly synchronous and some asynchronous API Hard to get thread-safe asynchronous API right No consumers for libctdb (partial use by ctdb CLI)

Implement libctdbapi

CTDB protocol marshalling API (client and server) Rewrite Samba’s CTDB interface using libctdbapi Rewrite CTDB server side using libctdb-serverapi?

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-157
SLIDE 157

Makeover: for the rest . . .

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-158
SLIDE 158

Makeover: for the rest . . .

Keep hacking in the spare time . . .

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-159
SLIDE 159

Makeover: for the rest . . .

Keep hacking in the spare time . . . The pace is too slow to keep up with Samba releases

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-160
SLIDE 160

Makeover: for the rest . . .

Keep hacking in the spare time . . . The pace is too slow to keep up with Samba releases Better solution Get smart(er) developers involved!

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-161
SLIDE 161

Legal Statement

This work represents the view of the authors and does not necessarily represent the view of IBM. IBM is a registered trademark of International Business Machines Corporation in the United States and/or other countries. Linux is a registered trademark of Linus Torvalds. Microsoft and Windows are trademarks of Microsoft Corporation in the United States, other countries, or both. Other company, product, and service names may be trademarks or service marks of others.

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB

slide-162
SLIDE 162

Questions?

Martin Schwenke, Amitay Isaacs A methodical makeover for CTDB