[988] | 1 | Changes in CTDB 2.5.1
|
---|
| 2 | =====================
|
---|
| 3 |
|
---|
| 4 | Important bug fixes
|
---|
| 5 | -------------------
|
---|
| 6 |
|
---|
| 7 | * The locking code now correctly implements a per-database active
|
---|
| 8 | locks limit. Whole database lock requests can no longer be denied
|
---|
| 9 | because there are too many active locks - this is particularly
|
---|
| 10 | important for freezing databases during recovery.
|
---|
| 11 |
|
---|
| 12 | * The debug_locks.sh script locks against itself. If it is already
|
---|
| 13 | running then subsequent invocations will exit immediately.
|
---|
| 14 |
|
---|
| 15 | * ctdb tool commands that operate on databases now work correctly when
|
---|
| 16 | a database ID is given.
|
---|
| 17 |
|
---|
| 18 | * Various code fixes for issues found by Coverity.
|
---|
| 19 |
|
---|
| 20 | Important internal changes
|
---|
| 21 | --------------------------
|
---|
| 22 |
|
---|
| 23 | * statd-callout has been updated so that statd client information is
|
---|
| 24 | always up-to-date across the cluster. This is implemented by
|
---|
| 25 | storing the client information in a persistent database using a new
|
---|
| 26 | "ctdb ptrans" command.
|
---|
| 27 |
|
---|
| 28 | * The transaction code for persistent databases now retries until it
|
---|
| 29 | is able to take the transaction lock. This makes the transation
|
---|
| 30 | semantics compatible with Samba's implementation.
|
---|
| 31 |
|
---|
| 32 | * Locking helpers are created with vfork(2) instead of fork(2),
|
---|
| 33 | providing a performance improvement.
|
---|
| 34 |
|
---|
| 35 | * config.guess has been updated to the latest upstream version so CTDB
|
---|
| 36 | should build on more platforms.
|
---|
| 37 |
|
---|
| 38 |
|
---|
| 39 | Changes in CTDB 2.5
|
---|
| 40 | ===================
|
---|
| 41 |
|
---|
| 42 | User-visible changes
|
---|
| 43 | --------------------
|
---|
| 44 |
|
---|
| 45 | * The default location of the ctdbd socket is now:
|
---|
| 46 |
|
---|
| 47 | /var/run/ctdb/ctdbd.socket
|
---|
| 48 |
|
---|
| 49 | If you currently set CTDB_SOCKET in configuration then unsetting it
|
---|
| 50 | will probably do what you want.
|
---|
| 51 |
|
---|
| 52 | * The default location of CTDB TDB databases is now:
|
---|
| 53 |
|
---|
| 54 | /var/lib/ctdb
|
---|
| 55 |
|
---|
| 56 | If you only set CTDB_DBDIR (to the old default of /var/ctdb) then
|
---|
| 57 | you probably want to move your databases to /var/lib/ctdb, drop your
|
---|
| 58 | setting of CTDB_DBDIR and just use the default.
|
---|
| 59 |
|
---|
| 60 | To maintain the database files in /var/ctdb you will need to set
|
---|
| 61 | CTDB_DBDIR, CTDB_DBDIR_PERSISTENT and CTDB_DBDIR_STATE, since all of
|
---|
| 62 | these have moved.
|
---|
| 63 |
|
---|
| 64 | * Use of CTDB_OPTIONS to set ctdbd command-line options is no longer
|
---|
| 65 | supported. Please use individual configuration variables instead.
|
---|
| 66 |
|
---|
| 67 | * Obsolete tunables VacuumDefaultInterval, VacuumMinInterval and
|
---|
| 68 | VacuumMaxInterval have been removed. Setting them had no effect but
|
---|
| 69 | if you now try to set them in a configuration files via CTDB_SET_X=Y
|
---|
| 70 | then CTDB will not start.
|
---|
| 71 |
|
---|
| 72 | * Much improved manual pages. Added new manpages ctdb(7),
|
---|
| 73 | ctdbd.conf(5), ctdb-tunables(7). Still some work to do.
|
---|
| 74 |
|
---|
| 75 | * Most CTDB-specific configuration can now be set in
|
---|
| 76 | /etc/ctdb/ctdbd.conf.
|
---|
| 77 |
|
---|
| 78 | This avoids cluttering distribution-specific configuration files,
|
---|
| 79 | such as /etc/sysconfig/ctdb. It also means that we can say: see
|
---|
| 80 | ctdbd.conf(5) for more details. :-)
|
---|
| 81 |
|
---|
| 82 | * Configuration variable NFS_SERVER_MODE is deprecated and has been
|
---|
| 83 | replaced by CTDB_NFS_SERVER_MODE. See ctdbd.conf(5) for more
|
---|
| 84 | details.
|
---|
| 85 |
|
---|
| 86 | * "ctdb reloadips" is much improved and should be used for reloading
|
---|
| 87 | the public IP configuration.
|
---|
| 88 |
|
---|
| 89 | This commands attempts to yield much more predictable IP allocations
|
---|
| 90 | than using sequences of delip and addip commands. See ctdb(1) for
|
---|
| 91 | details.
|
---|
| 92 |
|
---|
| 93 | * Ability to pass comma-separated string to ctdb(1) tool commands via
|
---|
| 94 | the -n option is now documented and works for most commands. See
|
---|
| 95 | ctdb(1) for details.
|
---|
| 96 |
|
---|
| 97 | * "ctdb rebalancenode" is now a debugging command and should not be
|
---|
| 98 | used in normal operation. See ctdb(1) for details.
|
---|
| 99 |
|
---|
| 100 | * "ctdb ban 0" is now invalid.
|
---|
| 101 |
|
---|
| 102 | This was documented as causing a permanent ban. However, this was
|
---|
| 103 | not implemented and caused an "unban" instead. To avoid confusion,
|
---|
| 104 | 0 is now an invalid ban duration. To administratively "ban" a node
|
---|
| 105 | use "ctdb stop" instead.
|
---|
| 106 |
|
---|
| 107 | * The systemd configuration now puts the PID file in /run/ctdb (rather
|
---|
| 108 | than /run/ctdbd) for consistency with the initscript and other uses
|
---|
| 109 | of /var/run/ctdb.
|
---|
| 110 |
|
---|
| 111 | Important bug fixes
|
---|
| 112 | -------------------
|
---|
| 113 |
|
---|
| 114 | * Traverse regression fixed.
|
---|
| 115 |
|
---|
| 116 | * The default recovery method for persistent databases has been
|
---|
| 117 | changed to use database sequence numbers instead of doing
|
---|
| 118 | record-by-record recovery (using record sequence numbers). This
|
---|
| 119 | fixes issues including registry corruption.
|
---|
| 120 |
|
---|
| 121 | * Banned nodes are no longer told to run the "ipreallocated" event
|
---|
| 122 | during a takeover run, when in fallback mode with nodes that don't
|
---|
| 123 | support the IPREALLOCATED control.
|
---|
| 124 |
|
---|
| 125 | Important internal changes
|
---|
| 126 | --------------------------
|
---|
| 127 |
|
---|
| 128 | * Persistent transactions are now compatible with Samba and work
|
---|
| 129 | reliably.
|
---|
| 130 |
|
---|
| 131 | * The recovery master role has been made more stable by resetting the
|
---|
| 132 | priority time each time a node becomes inactive. This means that
|
---|
| 133 | nodes that are active for a long time are more likely to retain the
|
---|
| 134 | recovery master role.
|
---|
| 135 |
|
---|
| 136 | * The incomplete libctdb library has been removed.
|
---|
| 137 |
|
---|
| 138 | * Test suite now starts ctdbd with the --sloppy-start option to speed
|
---|
| 139 | up startup. However, this should not be done in production.
|
---|
| 140 |
|
---|
| 141 |
|
---|
| 142 | Changes in CTDB 2.4
|
---|
| 143 | ===================
|
---|
| 144 |
|
---|
| 145 | User-visible changes
|
---|
| 146 | --------------------
|
---|
| 147 |
|
---|
| 148 | * A missing network interface now causes monitoring to fail and the
|
---|
| 149 | node to become unhealthy.
|
---|
| 150 |
|
---|
| 151 | * Changed ctdb command's default control timeout from 3s to 10s.
|
---|
| 152 |
|
---|
| 153 | * debug-hung-script.sh now includes the output of "ctdb scriptstatus"
|
---|
| 154 | to provide more information.
|
---|
| 155 |
|
---|
| 156 | Important bug fixes
|
---|
| 157 | -------------------
|
---|
| 158 |
|
---|
| 159 | * Starting CTDB daemon by running ctdbd directly should not remove
|
---|
| 160 | existing unix socket unconditionally.
|
---|
| 161 |
|
---|
| 162 | * ctdbd once again successfully kills client processes on releasing
|
---|
| 163 | public IPs. It was checking for them as tracked child processes
|
---|
| 164 | and not finding them, so wasn't killing them.
|
---|
| 165 |
|
---|
| 166 | * ctdbd_wrapper now exports CTDB_SOCKET so that child processes of
|
---|
| 167 | ctdbd (such as uses of ctdb in eventscripts) use the correct socket.
|
---|
| 168 |
|
---|
| 169 | * Always use Jenkins hash when creating volatile databases. There
|
---|
| 170 | were a few places where TDBs would be attached with the wrong flags.
|
---|
| 171 |
|
---|
| 172 | * Vacuuming code fixes in CTDB 2.2 introduced bugs in the new code
|
---|
| 173 | which led to header corruption for empty records. This resulted
|
---|
| 174 | in inconsistent headers on two nodes and a request for such a record
|
---|
| 175 | keeps bouncing between nodes indefinitely and logs "High hopcount"
|
---|
| 176 | messages in the log. This also caused performance degradation.
|
---|
| 177 |
|
---|
| 178 | * ctdbd was losing log messages at shutdown because they weren't being
|
---|
| 179 | given time to flush. ctdbd now sleeps for a second during shutdown
|
---|
| 180 | to allow time to flush log messages.
|
---|
| 181 |
|
---|
| 182 | * Improved socket handling introduced in CTDB 2.2 caused ctdbd to
|
---|
| 183 | process a large number of packets available on single FD before
|
---|
| 184 | polling other FDs. Use fixed size queue buffers to allow fair
|
---|
| 185 | scheduling across multiple FDs.
|
---|
| 186 |
|
---|
| 187 | Important internal changes
|
---|
| 188 | --------------------------
|
---|
| 189 |
|
---|
| 190 | * A node that fails to take/release multiple IPs will only incur a
|
---|
| 191 | single banning credit. This makes a brief failure less likely to
|
---|
| 192 | cause node to be banned.
|
---|
| 193 |
|
---|
| 194 | * ctdb killtcp has been changed to read connections from stdin and
|
---|
| 195 | 10.interface now uses this feature to improve the time taken to kill
|
---|
| 196 | connections.
|
---|
| 197 |
|
---|
| 198 | * Improvements to hot records statistics in ctdb dbstatistics.
|
---|
| 199 |
|
---|
| 200 | * Recovery daemon now assembles up-to-date node flags information
|
---|
| 201 | from remote nodes before checking if any flags are inconsistent and
|
---|
| 202 | forcing a recovery.
|
---|
| 203 |
|
---|
| 204 | * ctdbd no longer creates multiple lock sub-processes for the same
|
---|
| 205 | key. This reduces the number of lock sub-processes substantially.
|
---|
| 206 |
|
---|
| 207 | * Changed the nfsd RPC check failure policy to failover quickly
|
---|
| 208 | instead of trying to repair a node first by restarting NFS. Such
|
---|
| 209 | restarts would often hang if the cause of the RPC check failure was
|
---|
| 210 | the cluster filesystem or storage.
|
---|
| 211 |
|
---|
| 212 | * Logging improvements relating to high hopcounts and sticky records.
|
---|
| 213 |
|
---|
| 214 | * Make sure lower level tdb messages are logged correctly.
|
---|
| 215 |
|
---|
| 216 | * CTDB commands disable/enable/stop/continue are now resilient to
|
---|
| 217 | individual control failures and retry in case of failures.
|
---|
| 218 |
|
---|
| 219 |
|
---|
| 220 | Changes in CTDB 2.3
|
---|
| 221 | ===================
|
---|
| 222 |
|
---|
| 223 | User-visible changes
|
---|
| 224 | --------------------
|
---|
| 225 |
|
---|
| 226 | * 2 new configuration variables for 60.nfs eventscript:
|
---|
| 227 |
|
---|
| 228 | - CTDB_MONITOR_NFS_THREAD_COUNT
|
---|
| 229 | - CTDB_NFS_DUMP_STUCK_THREADS
|
---|
| 230 |
|
---|
| 231 | See ctdb.sysconfig for details.
|
---|
| 232 |
|
---|
| 233 | * Removed DeadlockTimeout tunable. To enable debug of locking issues set
|
---|
| 234 |
|
---|
| 235 | CTDB_DEBUG_LOCKS=/etc/ctdb/debug_locks.sh
|
---|
| 236 |
|
---|
| 237 | * In overall statistics and database statistics, lock buckets have been
|
---|
| 238 | updated to use following timings:
|
---|
| 239 |
|
---|
| 240 | < 1ms, < 10ms, < 100ms, < 1s, < 2s, < 4s, < 8s, < 16s, < 32s, < 64s, >= 64s
|
---|
| 241 |
|
---|
| 242 | * Initscript is now simplified with most CTDB-specific functionality
|
---|
| 243 | split out to ctdbd_wrapper, which is used to start and stop ctdbd.
|
---|
| 244 |
|
---|
| 245 | * Add systemd support.
|
---|
| 246 |
|
---|
| 247 | * CTDB subprocesses are now given informative names to allow them to
|
---|
| 248 | be easily distinguished when using programs like "top" or "perf".
|
---|
| 249 |
|
---|
| 250 | Important bug fixes
|
---|
| 251 | -------------------
|
---|
| 252 |
|
---|
| 253 | * ctdb tool should not exit from a retry loop if a control times out
|
---|
| 254 | (e.g. under high load). This simple fix will stop an exit from the
|
---|
| 255 | retry loop on any error.
|
---|
| 256 |
|
---|
| 257 | * When updating flags on all nodes, use the correct updated flags. This
|
---|
| 258 | should avoid wrong flag change messages in the logs.
|
---|
| 259 |
|
---|
| 260 | * The recovery daemon will not ban other nodes if the current node
|
---|
| 261 | is banned.
|
---|
| 262 |
|
---|
| 263 | * ctdb dbstatistics command now correctly outputs database statistics.
|
---|
| 264 |
|
---|
| 265 | * Fixed a panic with overlapping shutdowns (regression in 2.2).
|
---|
| 266 |
|
---|
| 267 | * Fixed 60.ganesha "monitor" event (regression in 2.2).
|
---|
| 268 |
|
---|
| 269 | * Fixed a buffer overflow in the "reloadips" implementation.
|
---|
| 270 |
|
---|
| 271 | * Fixed segmentation faults in ping_pong (called with incorrect
|
---|
| 272 | argument) and test binaries (called when ctdbd not running).
|
---|
| 273 |
|
---|
| 274 | Important internal changes
|
---|
| 275 | --------------------------
|
---|
| 276 |
|
---|
| 277 | * The recovery daemon on stopped or banned node will stop participating in any
|
---|
| 278 | cluster activity.
|
---|
| 279 |
|
---|
| 280 | * Improve cluster wide database traverse by sending the records directly from
|
---|
| 281 | traverse child process to requesting node.
|
---|
| 282 |
|
---|
| 283 | * TDB checking and dropping of all IPs moved from initscript to "init"
|
---|
| 284 | event in 00.ctdb.
|
---|
| 285 |
|
---|
| 286 | * To avoid "rogue IPs" the release IP callback now fails if the
|
---|
| 287 | released IP is still present on an interface.
|
---|
| 288 |
|
---|
| 289 |
|
---|
| 290 | Changes in CTDB 2.2
|
---|
| 291 | ===================
|
---|
| 292 |
|
---|
| 293 | User-visible changes
|
---|
| 294 | --------------------
|
---|
| 295 |
|
---|
| 296 | * The "stopped" event has been removed.
|
---|
| 297 |
|
---|
| 298 | The "ipreallocated" event is now run when a node is stopped. Use
|
---|
| 299 | this instead of "stopped".
|
---|
| 300 |
|
---|
| 301 | * New --pidfile option for ctdbd, used by initscript
|
---|
| 302 |
|
---|
| 303 | * The 60.nfs eventscript now uses configuration files in
|
---|
| 304 | /etc/ctdb/nfs-rpc-checks.d/ for timeouts and actions instead of
|
---|
| 305 | hardcoding them into the script.
|
---|
| 306 |
|
---|
| 307 | * Notification handler scripts can now be dropped into /etc/ctdb/notify.d/.
|
---|
| 308 |
|
---|
| 309 | * The NoIPTakeoverOnDisabled tunable has been renamed to
|
---|
| 310 | NoIPHostOnAllDisabled and now works properly when set on individual
|
---|
| 311 | nodes.
|
---|
| 312 |
|
---|
| 313 | * New ctdb subcommand "runstate" prints the current internal runstate.
|
---|
| 314 | Runstates are used for serialising startup.
|
---|
| 315 |
|
---|
| 316 | Important bug fixes
|
---|
| 317 | -------------------
|
---|
| 318 |
|
---|
| 319 | * The Unix domain socket is now set to non-blocking after the
|
---|
| 320 | connection succeeds. This avoids connections failing with EAGAIN
|
---|
| 321 | and not being retried.
|
---|
| 322 |
|
---|
| 323 | * Fetching from the log ringbuffer now succeeds if the buffer is full.
|
---|
| 324 |
|
---|
| 325 | * Fix a severe recovery bug that can lead to data corruption for SMB clients.
|
---|
| 326 |
|
---|
| 327 | * The statd-callout script now runs as root via sudo.
|
---|
| 328 |
|
---|
| 329 | * "ctdb delip" no longer fails if it is unable to move the IP.
|
---|
| 330 |
|
---|
| 331 | * A race in the ctdb tool's ipreallocate code was fixed. This fixes
|
---|
| 332 | potential bugs in the "disable", "enable", "stop", "continue",
|
---|
| 333 | "ban", "unban", "ipreallocate" and "sync" commands.
|
---|
| 334 |
|
---|
| 335 | * The monitor cancellation code could sometimes hang indefinitely.
|
---|
| 336 | This could cause "ctdb stop" and "ctdb shutdown" to fail.
|
---|
| 337 |
|
---|
| 338 | Important internal changes
|
---|
| 339 | --------------------------
|
---|
| 340 |
|
---|
| 341 | * The socket I/O handling has been optimised to improve performance.
|
---|
| 342 |
|
---|
| 343 | * IPs will not be assigned to nodes during CTDB initialisation. They
|
---|
| 344 | will only be assigned to nodes that are in the "running" runstate.
|
---|
| 345 |
|
---|
| 346 | * Improved database locking code. One improvement is to use a
|
---|
| 347 | standalone locking helper executable - the avoids creating many
|
---|
| 348 | forked copies of ctdbd and potentially running a node out of memory.
|
---|
| 349 |
|
---|
| 350 | * New control CTDB_CONTROL_IPREALLOCATED is now used to generate
|
---|
| 351 | "ipreallocated" events.
|
---|
| 352 |
|
---|
| 353 | * Message handlers are now indexed, providing a significant
|
---|
| 354 | performance improvement.
|
---|