summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
| * call: transfer the record flags in the ctdb call packets.Michael Adam2011-03-141-6/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | This way, the MIGRATED_WITH_DATA information can be transported along with the records. This is important for vacuuming to function properly. The record flags are appended to the data section of the ctdb_req_dmaster and ctdb_reply_dmaster structs. Pair-Programmed-With: Stefan Metzmacher <metze@samba.org> (This used to be ctdb commit 945187d64cfc7bd30a0c3b0d548cbe582d95dde3)
| * server: in the VACUUM_FETCH handler, add the VACUUM_MIGRAION to the call flagsMichael Adam2011-03-141-0/+1
| | | | | | | | | | | | | | | | This way, the records coming in via this handler, can be treated appropriately. Namely, they can be deleted instead of being stored when the meet the fast-path vacuuming criteria (empty, never migrated with data...) (This used to be ctdb commit fb5d832104970320359b3e474eb291ca3d629380)
| * add a new record flag CTDB_REC_FLAG_VACUUM_MIGRATED.Michael Adam2011-03-141-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | This is to be used internally. The purpose is to flag a record as been migrated by a VACUUM_MIGRATION, which is triggered by a VACUUM_FETCH message as part of the vacuuming. The local store routine will base its decision whether to delete or to store the record (among other things) upon the value of this flag. This flag should never be stored in the local database copies. (This used to be ctdb commit dd2449c422f323f9b5485e45107a9cc5acc09e08)
| * call: Move definition of call flags down to the definition of the flags field.Michael Adam2011-03-141-2/+2
| | | | | | | | (This used to be ctdb commit 86c844fb08a7fd33e94f56b8d5e43278120e1162)
| * call: add new call flag CTDB_CALL_FLAG_VACUUM_MIGRATIONMichael Adam2011-03-141-0/+1
| | | | | | | | | | | | | | | | | | This is to be used when the CTDB_SRVID_VACUUM_FETCH message triggers the migration of deleted records to the lmaster. The lmaster can then delete records that have not been migrated with data instead of storing them. (This used to be ctdb commit 455cc6616e10b7f09589f9b87cb60f591bb502b0)
| * recoverd: in a recovery, set the MIGRATED_WITH_DATA flag on all recordsMichael Adam2011-03-141-0/+1
| | | | | | | | | | | | | | | | | | | | Those records that are kept after recovery, are non-empty, and stored identically on all nodes. So this is as if they had been migrated with data. Pair-Programmed-With: Stefan Metzmacher <metze@samba.org> (This used to be ctdb commit 101be642e492a3a54231e2e3e6553a59380fe702)
| * server: when we migrate off a record with data, set the MIGRATED_WITH_DATA flagMichael Adam2011-03-141-0/+4
| | | | | | | | (This used to be ctdb commit f5fb232117886186066ab3430fdd2307cba94960)
| * vacuum: check lmaster against num_nodes instead of vnn_map->sizeMichael Adam2011-03-141-2/+8
| | | | | | | | | | | | | | When lmaster is bigger than the biggest recorded node number, then exit the traverse with error. (This used to be ctdb commit 3930c7796b72bbf275bbca8aaeceec3e705a964b)
| * vacuum: reduce indentation of the loop sending VACUUM_FETCH controlsMichael Adam2011-03-141-16/+21
| | | | | | | | | | | | This slightly improves the code structure in that loop. (This used to be ctdb commit bc4990e600c53433a924a0d70e3488a5a6bdc1ff)
| * vacuum: correctly send TRY_DELETE_RECORDS ctrl to all active nodesMichael Adam2011-03-141-9/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Originally, the control was sent to all records in the vnn_map, but there was something still missing here: When a node can not become lmaster (via CTDB_CAPABILITY_LMASTER=no) then it will not be part of the vnn_map. So such a node would be active but never receive the TRY_DELETE_RECORDS control from a vacuuming run. This is fixed in this change by correctly building the list of active nodes first in the same way that the recovery process does it. (This used to be ctdb commit 49247df4a47a8a107fa7dd7b187e69e243e6bdbe)
| * vacuum: in ctdb_vacuum_db, fix the length of the array of vacuum fetch listsMichael Adam2011-03-111-8/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch fixes segfaults in the vacuum child when at least one node has been stopped or removed from the cluster: The size of the vnn_map is only the number of active nodes (that can be lmaster). But the node numbers that are referenced by the vnn_map spread over all configured nodes. Since the array of vacuum fetch lists is referenced by the key's lmaster's node number later on, the array needs to be of size num_nodes instad of vnn_map->size. (This used to be ctdb commit 136508e3f4dd0acc210dde938ad59ef38b63d3a1)
| * Fix typos in a comment in vacuum_traverse.Michael Adam2011-03-091-1/+1
| | | | | | | | (This used to be ctdb commit 6a4df8242ee4d095ff03229a168b83bcd84c8a7a)
| * tests: fix segfault in store test when connection to ctdbd failed.Michael Adam2011-03-091-0/+5
| | | | | | | | (This used to be ctdb commit 43a15d2906b3f9d08af234f55a3a0f614571d3a7)
| * tests: fix segfault in fetch_one test when connection to ctdbd failsMichael Adam2011-03-091-0/+5
| | | | | | | | (This used to be ctdb commit 89c8e52de3878b8e29c6a24725eb66c18fd1f52a)
| * tests: fix segfault in fetch test when connection to ctdb failed.Michael Adam2011-03-091-0/+5
| | | | | | | | (This used to be ctdb commit f493eb31abf956fd38347c2ff77026e380a9664d)
| * tests: fix segfault in randrec test when connection to daemon fails.Michael Adam2011-03-091-0/+5
| | | | | | | | (This used to be ctdb commit 715999d7ffbf10f3a57de3ee08a293165333553a)
| * gitignore: add tags fileMichael Adam2011-03-091-0/+1
| | | | | | | | (This used to be ctdb commit 1e2ff096b78d160f5c535bccfc5482830372fd56)
| * gitignore: add vi swap filesMichael Adam2011-03-091-0/+1
| | | | | | | | (This used to be ctdb commit ac4dad619111e7153fe66eb2713f3b2ce63d3999)
| * Restart recovery dameon if it looks like it hung.Ronnie Sahlberg2011-03-071-10/+2
| | | | | | | | | | | | Dont shutdown ctdbd completely, that only makes the problem worse. (This used to be ctdb commit 221ecc2509f6d267d1854c1042ff945a620510bb)
| * If/when the recovery daemon terminates unexpectedly, try to restart it again ↵Ronnie Sahlberg2011-03-011-10/+15
| | | | | | | | | | | | | | | | from the main daemon instead of just shutting down the main deamon too. While it does not address the reason for recovery daemon shutting down, it reduces the impact of such issues and makes the system more robust. (This used to be ctdb commit 0566ef3d6cef809bda204877c493c80ff9eb2c40)
| * ATTACH_DB: simplify the code slightly and change the semantics to onlyRonnie Sahlberg2011-03-011-7/+4
| | | | | | | | | | | | | | | | | | | | refuse a db attach during recovery IF we can associate the request from a genuine real client instead of deciding this on whether client_id is zero or This will suppress/avoid messages like these : DB Attach to database %s refused. Can not match clientid... (This used to be ctdb commit b05ccf366df985e0a3365aacc75761ebd438deaf)
| * Deferred attach : at early startup, defer any db attach calls until we are ↵Ronnie Sahlberg2011-03-015-15/+119
| | | | | | | | | | | | out of recovery. (This used to be ctdb commit eeaabd579841f60ab2c5b004cbbb1f5de2bfe685)
| * Dont return error if trying to set db priority on a db that does not yet exist.Ronnie Sahlberg2011-02-251-2/+2
| | | | | | | | | | | | | | | | Just treat as a nop. When the database is created later it will get its priority set properly. (This used to be ctdb commit 05c934b10ad2690be9d75c9033a0b849bf16455d)
| * server: add a comment explaining the call redirect logic in ↵Michael Adam2011-02-241-3/+24
| | | | | | | | | | | | ctdb_call_send_redirect(). (This used to be ctdb commit 81663b81687c0ba681500cca6aa8174bb9587ad2)
| * recover: finish pending trans3 commits when a recovery is finished.Michael Adam2011-02-241-0/+2
| | | | | | | | | | | | | | | | | | | | When the end_recovery control is received, pending trans3 commits are finished. During the recovery, all the actions like persistent_callback and persistent_store_timeout had been disabled to let the recovery do its job. After the recover is completed, send the reply to the waiting clients. (This used to be ctdb commit f7dfeb7143f574c2434f7dd16917380dfd1f4f64)
| * persistent: add ctdb_persistent_finish_trans3_commits().Michael Adam2011-02-242-0/+36
| | | | | | | | | | | | | | | | This function walks all databases and checks for running trans3 commits. It sends replies to all of them (with error code) and ends them. To be called when a recovery finishes. (This used to be ctdb commit 70ba153b532528bdccea70c5ea28972257f384c1)
| * daemon: correctly end a running trans3_commit if the client disconnects.Michael Adam2011-02-241-0/+9
| | | | | | | | (This used to be ctdb commit 9e0898db6df52d9bc799dd87bfea8c72d5f70ba0)
| * persistent: add a client context to the persistent_stat and track the db_idMichael Adam2011-02-241-7/+24
| | | | | | | | | | | | | | | | | | | | | | The db_id is tracked in the client context as an indication that a transaction commit is in progress. This is cleared in the persistent_state talloc destructor. This is in order to properly treat running trans3_commits if the client disconnects. (This used to be ctdb commit e886ff24f4e3e250944289db95916b948893d26c)
| * persistent: reject trans3_control when a commit is already active.Michael Adam2011-02-241-0/+8
| | | | | | | | | | | | This should actually never happen. (This used to be ctdb commit f416e76838fe2adf629d4356d1cc87054b1af164)
| * persistent: allocate the persistent state in the ctdb_db struct in trans3_commitMichael Adam2011-02-241-2/+14
| | | | | | | | | | | | | | | | | | Make sure that ctdb_db->persistent_state is correctly NULL-ed when the state is freed. This way, we can use ctdb_db->persistent_state as an indication for whether a transaction commit is currently running. (This used to be ctdb commit 761cb235193564a0f337d0308f0a9e6de0ef2710)
| * persistent: add a ctdb_db context to the ctdb_persistent_state struct.Michael Adam2011-02-241-0/+1
| | | | | | | | (This used to be ctdb commit a14917c983c3b9bbbf38f5ddeecdbbe5bde32364)
| * persistent: add a ctdb_persistent_state member to the ctdb_db context.Michael Adam2011-02-241-0/+1
| | | | | | | | | | | | To be used for tracking running transaction commits through recoveries. (This used to be ctdb commit 1237e15df4af58a3d220eea42a4b75e21e65029f)
| * persistent_callback: print "no error message given" instead of "(null)"Michael Adam2011-02-241-1/+1
| | | | | | | | (This used to be ctdb commit d871a38978219e004833608c11aae98fe47614b9)
| * persistent: reduce indentation for the finishing moves in ↵Michael Adam2011-02-241-11/+15
| | | | | | | | | | | | ctdb_persistent_callback (This used to be ctdb commit 2c2d1646eb753ea9561f085bcb101153267b052b)
| * persistent: if a node failed to update_record, trigger a recoveryMichael Adam2011-02-241-0/+11
| | | | | | | | | | | | | | and stop processing of the update_record replies in order to let the recovery finish the trans3_commit control. (This used to be ctdb commit cab95570dc1eefb08abbac5ae411c29f699b51cc)
| * persistent_store_timout: do not really time out the trans3_commit control in ↵Michael Adam2011-02-241-1/+7
| | | | | | | | | | | | | | | | | | | | | | recovery If a recovery was started, then all further processing of the update_record controls sent by the trans3_commit control and timing them out is disabled. The recovery should trigger sending the reply for the update record control when finished. (This used to be ctdb commit 983c1ca2e18ecd60fca69bfe9e116125cc695857)
| * persistent_callback: ignore the update-recordreturn code of remote node in ↵Michael Adam2011-02-241-0/+6
| | | | | | | | | | | | | | | | | | | | recovery If a recovery was started, then all further processing of the update_record controls sent by the trans3_commit control is disabled. The recovery should trigger sending the reply for the update record control when finished. (This used to be ctdb commit 12cf0619255b12230843cd8bb49cbfdea376ca2f)
| * ctdb_req_dmaster from non-masterRonnie Sahlberg2011-02-181-1/+3
| | | | | | | | | | | | | | | | | | | | If we find a situatior where we get a stray packet with the wrong dmaster, dont suicide with ctdb_fatal() since this is too disruptive. Just drop the stray packet and force a recovery to make sure all is good again. CQ S1022004 (This used to be ctdb commit 62b7fe853db37c0a90e48a0332a3426a8dcb4ed8)
| * 50.samba : Tell winbind about every time we add/remove and ip from the nodeRonnie Sahlberg2011-02-181-0/+7
| | | | | | | | | | | | CQ S1021636 (This used to be ctdb commit 87b279027616cffbcedfd534ac0032cd51238dfe)
| * Add two new flags for the ltdb header.Ronnie Sahlberg2011-02-181-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | One of which signals that the record has never been migrated to/from a node while containing data. This property "has never been migrated while non-zero" is important later to provide heuristics on which records we might be able to purge from the tdb files cheaply, i.e. without having to rely on the full-blown database vacuum. These records are belived to be very common and the pattern would look like this : 1, no record exists at all. 2, client opens a file 3, samba requests the record for this file 4, an empty record is created on the LMASTER 5, the empty record is migrated to the DMASTER 6, samba writes a <sharemode> to the record locally and the record grows 7, client finishes working the file and closes the file 8, samba removes the sharemode and the record becomes empty again. 9, much later : vacuuming will delete the record At stage 8, since the record has never been migrated onto a node wile being non-zero it would be safe, and much more efficient to just delete the record completely from the database and hand it back to the LMASTER. The flags occupy the same uint32_t as was previously used for laccessor/lacount in the header. For now, make sure the flags only define/use the top 16 bits of this field so that we are sure we dont collide with bits set to one from previous generations of the ctdb cluster database prior to this change in semantics of this word. This is a rework of Michaels patch : commit 2af1a47cbe1a608496c8caf3eb0c990eb7259a0d Author: Michael Adam <obnox@samba.org> Date: Tue Nov 30 17:00:54 2010 +0100 add a DEFAULT record flag and a MIGRATED_WITH_DATA record flag. (This used to be ctdb commit e075670dee8e6ecaba54986f87a85be3d0528b6b)
| * remove checking for filesystems and filesystem health from the cnfs script.Ronnie Sahlberg2011-02-181-74/+0
| | | | | | | | | | | | remove the gpfsmount and gpfsumount entry points (This used to be ctdb commit 7db5a4832a9555be53c301f198f72b9e075a8ae7)
| * 60.nfsRonnie Sahlberg2011-02-181-2/+2
| | | | | | | | | | | | | | | | Dont update the statd settings that often. When we have very many nodes and very many ips, this would generate a lot of unnessecary load on the system (This used to be ctdb commit 0c030c9384500f340d8382c20e1e91b11aa377e9)
| * Remove LACOUNT and LACCESSOR and migrate the records immediately.Ronnie Sahlberg2011-02-187-34/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This concept didnt work out and it is really just as expensive as a full migration anyway, without the benefit of caching the data for subsequence accesses. Now, migrate the records immediately on first access. This will be combined with a "cheap vacuum-lite" for special empty records to prevent growth of databases. Later extensions to mimic read-only behaviour of records will include proper shared read-only locking of database records, making the laccessor/lacount read-only access to the data obsolete anyway. By removing this special case and handling of lacount laccessor makes the codapath where shared read-only locking will be be implemented simpler, and frees up space in the ctdb_ltdb header for use by vacuuming flags as well as read-only locking flags. (This used to be ctdb commit 155dd1f4885fe142c6f8bd09430f65daf8a17e51)
| * change the hash function to use the much better Jenkins hashRonnie Sahlberg2011-02-181-8/+1
| | | | | | | | | | | | | | | | from the tdb library cq S1020233 (This used to be ctdb commit b86feb6fe463dfdb67b2798491df18a4c434a430)
| * We default to non-deterministic ip now where ips are "sticky" and dont changeRonnie Sahlberg2011-02-081-31/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | too much. This means we can simplify the way we add ips significantly and stop trying to move them. We also check if the node already hosts the ip, in which case we used to return an error. Instead just print an error string but return 0, ok. This makes it easier to script, and works around broken scripts. CQ1021034 (This used to be ctdb commit 307e5e95548155a31682dfcb0956834d0c85838e)
| * If the node is stopped, put a log entry in /var/log/* to indicate this is ↵Ronnie Sahlberg2011-02-021-0/+3
| | | | | | | | | | | | why we never become ready (This used to be ctdb commit ef1de8211f83259ea37dcd57562139a3b63d9631)
| * LockWait congestion.Ronnie Sahlberg2011-01-243-13/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a dlist to track all active lockwait child processes. Everytime creating a new lockwait handle, check if there is already an active lockwait process for this database/key and if so, send the new request straight to the overflow queue. This means we will only have one active lockwaic child process for a certain key, even if there were thousands of fetch-lock requests for this key. When the lockwait processing finishes for the original request, the processing in d_overflow() will automagically process all remaining keys as well. Add back a --nosetsched argument to make it easier to run under gdb (This used to be ctdb commit 3e9317a2e1f687b04bf51575d47fcd4faa6e6515)
| * Compile fixRonnie Sahlberg2011-01-241-1/+1
| | | | | | | | (This used to be ctdb commit a81da1e67cd11734839c3fa7ae1ddaaf3459416d)
| * ctdb_lockwait: create overflow queue.Rusty Russell2011-01-242-7/+62
| | | | | | | | | | | | | | | | | | Once we have more than 200 children waiting on a particular db, don't create any more. Just put them on an overflow queue, and when a child gets a lock search that queue to see if others were after the same lock (they probably were). (This used to be ctdb commit 5e614e8cfd1e9a4b13035a0e400b7a60a745b510)
| * Add a new test tool that fetch locks a record and then blocks until it receivesRonnie Sahlberg2011-01-242-1/+125
| | | | | | | | | | | | user input to unlock the record again. (This used to be ctdb commit 1b3c5278aa1bf712606e2ec138e6be7b2e8a6ad1)