metze/ctdb/wip.git
13 years agoclient: add output of jenkins hash to ctdb catdb (with --print-hash) ctdb-1.0.114-backports-vacuuming-wip
Michael Adam [Mon, 3 Jan 2011 12:15:34 +0000 (13:15 +0100)]
client: add output of jenkins hash to ctdb catdb (with --print-hash)

13 years agovacuum: use tdb_jenkins_hash() instead of ctdb_hash() for vacuuming lists.
Michael Adam [Mon, 3 Jan 2011 12:16:16 +0000 (13:16 +0100)]
vacuum: use tdb_jenkins_hash() instead of ctdb_hash() for vacuuming lists.

This is to reduce the chance for hash collisions.
We now use the jenkins_hash for the delete_queue and the delete_tree.

13 years agolib/tdb: backport from ctdb/1.2 and ctdb/master
Stefan Metzmacher [Mon, 18 Apr 2011 10:05:28 +0000 (12:05 +0200)]
lib/tdb: backport from ctdb/1.2 and ctdb/master

In ctdb/master commit d09fa845bd848d04507853809acf42e0471b44bf.

metze

13 years agoctdb: pass the additional print flags to ctdb_dump_db and ctdb_dumpdb_record.
Michael Adam [Wed, 22 Dec 2010 11:46:43 +0000 (12:46 +0100)]
ctdb: pass the additional print flags to ctdb_dump_db and ctdb_dumpdb_record.

13 years agoctdb: add a couple of flags to control output of ctdb catdb
Michael Adam [Wed, 22 Dec 2010 10:58:43 +0000 (11:58 +0100)]
ctdb: add a couple of flags to control output of ctdb catdb

  --print-datasize         do not print record data in catdb, only data size
  --print-recordflags      print the record flags in catdb
  --print-lmaster          print the record's lmaster in catdb
  --print-hash             print the record's hash in catdb
  --print-recordflags      print the records flags in catdb
  --print-emptyrecords     also print the empty records in catdb

13 years agoclient: add version ctdb_traverse_ext() of ctdb_traverse() that can list empty records.
Michael Adam [Wed, 22 Dec 2010 11:45:06 +0000 (12:45 +0100)]
client: add version ctdb_traverse_ext() of ctdb_traverse() that can list empty records.

13 years agoRevert "Ignore any scripts that timesout for most events, except startup."
Stefan Metzmacher [Mon, 18 Apr 2011 16:42:14 +0000 (18:42 +0200)]
Revert "Ignore any scripts that timesout for most events, except startup."

This reverts commit b6d939c9758c7d2e39206838492f2f644dd61db7.

It's a bad idea to ignore hanging scripts, there must be something
wrong if that happens!

metze

13 years agoVacuuming: initialize a variable to avoid a harmless valgrind hit
Ronnie Sahlberg [Sun, 13 Mar 2011 00:30:52 +0000 (11:30 +1100)]
Vacuuming: initialize a variable to avoid a harmless valgrind hit

Signed-off-by: Michael Adam <obnox@samba.org>
(cherry picked from commit ad709e99bcad7a4884f2336663d161ba61307ae5)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovacuum: fix a comment typo
Michael Adam [Fri, 11 Mar 2011 15:05:44 +0000 (16:05 +0100)]
vacuum: fix a comment typo
(cherry picked from commit a16dc65b4602da5ce2c16578bec2e7882aff240d)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovacuum: use insert_record_into_delete_queue in ctdb_local_schedule_for_deletion.
Michael Adam [Fri, 11 Mar 2011 14:57:45 +0000 (15:57 +0100)]
vacuum: use insert_record_into_delete_queue in ctdb_local_schedule_for_deletion.

This is to take advantage of the hash collision handling and logging
also in ctdb_local_schedule_for_deletion.
(cherry picked from commit 52193b6692091e341ed7a81dbd9a61ae49a8aac5)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovacuum: refactor insert_record_into_delete_queue out of ctdb_control_schedule_for_del...
Michael Adam [Fri, 11 Mar 2011 14:55:52 +0000 (15:55 +0100)]
vacuum: refactor insert_record_into_delete_queue out of ctdb_control_schedule_for_deletion
(cherry picked from commit be4b63ee18933524f780df5c313447e5ef0786d1)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovacuum: raise a debug level from INFO to DEBUG
Michael Adam [Fri, 11 Mar 2011 13:57:15 +0000 (14:57 +0100)]
vacuum: raise a debug level from INFO to DEBUG

when overwriting an existing entry in the delete_queue.
(cherry picked from commit f28e636cc4a04ef982672d5f569ad6b6b963db1f)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agoctdb_ltdb_store_server: honour the AUTOMATIC record flag
Michael Adam [Thu, 3 Feb 2011 15:32:23 +0000 (16:32 +0100)]
ctdb_ltdb_store_server: honour the AUTOMATIC record flag

Do not delete empty records that carry this flag but store
them and schedule them for deletetion. Do not store the flag
in the ltdb though, since this is internal only and should not
be visible to the client.
(cherry picked from commit f898ff21fa338358179e79381215b13a6bc77c53)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agoltdb: add the CTDB_REC_FLAG_AUTOMATIC to the initial header in ctdb_ltdb_fetch()
Michael Adam [Thu, 3 Feb 2011 15:30:52 +0000 (16:30 +0100)]
ltdb: add the CTDB_REC_FLAG_AUTOMATIC to the initial header in ctdb_ltdb_fetch()

Signals that this record was not created by a client level store.
(cherry picked from commit 69d34983a37b0324ff7610b8dfdcd8d13bf81c54)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agoctdb_private.h: add record flag CTDB_REC_FLAG_AUTOMATIC
Michael Adam [Thu, 3 Feb 2011 15:27:42 +0000 (16:27 +0100)]
ctdb_private.h: add record flag CTDB_REC_FLAG_AUTOMATIC

This is a flag that shall signa that a record has been automatically generated by ctdb
and not by an explicit client store operation. This will be used in the ctdb_ltdb_fetch
operation which stores an empty record with default initial header before trying to
migrate the record from the dmaster when the record does not exist in the local tdb.

similar to commit 46381a3cb58ccc11422af8f7798c80ea8d72294f.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agoctdb_ltdb_store_server: add ability to send SCHEDULE_FOR_DELETION control to ctdb_ltd...
Michael Adam [Tue, 28 Dec 2010 12:19:22 +0000 (13:19 +0100)]
ctdb_ltdb_store_server: add ability to send SCHEDULE_FOR_DELETION control to ctdb_ltdb_store.
(cherry picked from commit ab2711701999a5ecc23a36b3d9ba8e94f92e4c87)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agoctdb_ltdb_store_server: Improve debug message in ctdb_ltdb_store when store or delete...
Michael Adam [Tue, 21 Dec 2010 17:08:11 +0000 (18:08 +0100)]
ctdb_ltdb_store_server: Improve debug message in ctdb_ltdb_store when store or delete fails.
(cherry picked from commit 2559b2a45eb11834da3b0e0963e24351c8b7477f)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agoctdb_ltdb_store_server: always store the data when ctdb_ltdb_store() is called from...
Michael Adam [Tue, 21 Dec 2010 16:50:52 +0000 (17:50 +0100)]
ctdb_ltdb_store_server: always store the data when ctdb_ltdb_store() is called from the client

This also fixes a segfault since ctdb_lmaster uses the vnn_map.
(cherry picked from commit e58c8f51f27e468897af5210b80e5f5f45c3c4bb)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agoctdb_ltdb_store_server: implement fastpath vacuuming deletion based on VACUUM_MIGRATE...
Michael Adam [Fri, 10 Dec 2010 13:13:50 +0000 (14:13 +0100)]
ctdb_ltdb_store_server: implement fastpath vacuuming deletion based on VACUUM_MIGRATED flag.

When the record has been obtained by the lmaster as part of the vacuuming-fetch
handler and it is empty and never been migrated with data, then such records
are deleted instead of being stored. These records have automatically been
deleted when leaving the former dmaster, so that they vanish for good when
hitting the lmaster in this way. This will reduces the load on traditional
vacuuming.

Pair-Programmed-With: Stefan Metzmacher <metze@samba.org>
(cherry picked from commit c9b65f3602f51bcbf0e6d82c12076c31e4aebe38)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agoctdb_ltdb_store_server: delete an empty record that is safe to delete instead of...
Michael Adam [Fri, 3 Dec 2010 14:29:21 +0000 (15:29 +0100)]
ctdb_ltdb_store_server: delete an empty record that is safe to delete instead of storing locally.

When storing a record that is being migrated off to another node
and has never been migrated with data, then we can safely delete it
from the local tdb instead of storing the record with empty data.

Note: This record is not deleted if we are its lmaster or dmaster.

Pair-Programmed-With: Stefan Metzmacher <metze@samba.org>
(cherry picked from commit 3cca0d4b48325d86de2cb0b44bb7811a30701352)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agoserver: Use the ctdb_ltdb_store_server() in the ctdb daemon for non-persistent dbs
Michael Adam [Thu, 30 Dec 2010 17:19:32 +0000 (18:19 +0100)]
server: Use the ctdb_ltdb_store_server() in the ctdb daemon for non-persistent dbs

This is realized by adding a ctdb_ltdb_store_fn function pointer to the db
context and filling it in the attach procedure for non-persistent dbs.

similar to commit df49ec44de80affa5ccc637dec12a20a26e8706e.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agoserver: create a server variant ctdb_ltdb_store_server() of ctdb_ltdb_store().
Michael Adam [Thu, 30 Dec 2010 16:44:51 +0000 (17:44 +0100)]
server: create a server variant ctdb_ltdb_store_server() of ctdb_ltdb_store().

This is supposed to contain logic for deleting records that are safe
to delete and scheduling records for deletion. It will be called in
server context for non-persistent databases instead of the standard
ctdb_ltdb_store() function.
(cherry picked from commit 23631ffc152486aed9ce5b69a391e52bc4947833)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agodaemon: fill ctdb->ctdbd_pid early
Michael Adam [Tue, 28 Dec 2010 12:14:23 +0000 (13:14 +0100)]
daemon: fill ctdb->ctdbd_pid early
(cherry picked from commit 3da1e2e30bf34622f08e6ecd5b8fe55684e5007a)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agotest: send SCHEDULE_FOR_DELETION control from randrec test.
Michael Adam [Tue, 21 Dec 2010 14:29:46 +0000 (15:29 +0100)]
test: send SCHEDULE_FOR_DELETION control from randrec test.
(cherry picked from commit 30aa55b3efc6fbd4078f93da386b6aeb337c1a0c)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agoclient: add accessor function ctdb_header_from_record_handle().
Michael Adam [Tue, 21 Dec 2010 14:29:23 +0000 (15:29 +0100)]
client: add accessor function ctdb_header_from_record_handle().

similar to commit cf57efd440ccc3db381386f4749bfcbf8ac5ecae.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovacuum: add ctdb_local_schedule_for_deletion()
Michael Adam [Tue, 28 Dec 2010 12:13:34 +0000 (13:13 +0100)]
vacuum: add ctdb_local_schedule_for_deletion()
(cherry picked from commit b70bc141d84f7355d2c6c901961b7366db566980)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agoserver: implement a new control SCHEDULE_FOR_DELETION to fill the delete_queue.
Michael Adam [Tue, 21 Dec 2010 13:25:48 +0000 (14:25 +0100)]
server: implement a new control SCHEDULE_FOR_DELETION to fill the delete_queue.

similar to commit 680223074e992b32ccf6f42cb80c3fa93074fee7.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agocontrol: add a new control opcode CTDB_CONTROL_SCHEDULE_FOR_DELETION
Michael Adam [Tue, 8 Mar 2011 23:57:55 +0000 (00:57 +0100)]
control: add a new control opcode CTDB_CONTROL_SCHEDULE_FOR_DELETION

similar to commit 4cebfa33db3c7effa087f753530c52b2dd8550e6.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agocontrol: add macro CHECK_CONTROL_MIN_DATA_SIZE.
Michael Adam [Tue, 8 Mar 2011 23:56:25 +0000 (00:56 +0100)]
control: add macro CHECK_CONTROL_MIN_DATA_SIZE.

This is for the control dispatcher to check whether the input data has
a required minimum size.
(cherry picked from commit 2038e745db33cc5c3b4e2db8a00a57ede03906a2)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovacuum: lower level of hash collision debug message to INFO
Michael Adam [Thu, 23 Dec 2010 10:54:09 +0000 (11:54 +0100)]
vacuum: lower level of hash collision debug message to INFO
(cherry picked from commit b9bdef46fedfbc543263b67cfee3e896773cd8e8)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovacuum: add statistics output to the fast and full traverse runs.
Michael Adam [Wed, 22 Dec 2010 23:27:27 +0000 (00:27 +0100)]
vacuum: add statistics output to the fast and full traverse runs.
(cherry picked from commit 3addd28aa73883b3b05888e309d19db0eb67eab9)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovacuum: refactor insert_delete_record_data_into_tree() out of add_record_to_delete_tree()
Michael Adam [Tue, 21 Dec 2010 13:19:00 +0000 (14:19 +0100)]
vacuum: refactor insert_delete_record_data_into_tree() out of add_record_to_delete_tree()

for reuse in filling the delete_queue.
(cherry picked from commit 7bbb12695c24da25671f1c39a411295d35870d2c)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovacuum: change all Vacuum*Interval tunables to default to 10
Michael Adam [Mon, 20 Dec 2010 20:43:41 +0000 (21:43 +0100)]
vacuum: change all Vacuum*Interval tunables to default to 10

So, by default we have a fastpath vacuuming every 10 seconds and
full blown db-traverse vacuuming once every 10 minutes.
(cherry picked from commit 4f0ace982dbb5b4f9c035dbf4cb0ae74cd18d81b)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovacuum: disable full db-traverse vacuuming runs when VacuumFastPathCount == 0
Michael Adam [Mon, 20 Dec 2010 20:30:39 +0000 (21:30 +0100)]
vacuum: disable full db-traverse vacuuming runs when VacuumFastPathCount == 0
(cherry picked from commit 571683e7c48aeed8ce41c584d016ced7ff0d2e2d)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovacuum: Only run full vacuumig (db traverse) every VacuumFastPathCount times.
Michael Adam [Mon, 20 Dec 2010 17:03:38 +0000 (18:03 +0100)]
vacuum: Only run full vacuumig (db traverse) every VacuumFastPathCount times.
(cherry picked from commit 23b8c8c5fc8604ee0bd6da1f4b5152277eb5f1c0)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovacuum: reset the fast path count in the event handle if it exceeds the limit.
Michael Adam [Mon, 20 Dec 2010 16:54:04 +0000 (17:54 +0100)]
vacuum: reset the fast path count in the event handle if it exceeds the limit.

similar to commit 91e6d36a190b1c9e4c8b18f7833e51c5c9a67574.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovacuum: bump the number of fast-path runs in the vacuum child destructor
Michael Adam [Mon, 20 Dec 2010 16:49:29 +0000 (17:49 +0100)]
vacuum: bump the number of fast-path runs in the vacuum child destructor
(cherry picked from commit c0668bfe0bb4e69988ae34d875568d08539e6fb9)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovacuum: add a fast_path_count to the vacuum_handle.
Michael Adam [Mon, 20 Dec 2010 16:44:02 +0000 (17:44 +0100)]
vacuum: add a fast_path_count to the vacuum_handle.
(cherry picked from commit 53a39d0cc5ea251c2189ec8178ccb769fa046c43)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agoAdd a tunable VacuumFastPathCount.
Michael Adam [Mon, 20 Dec 2010 16:42:25 +0000 (17:42 +0100)]
Add a tunable VacuumFastPathCount.

This will control how many fast-path vacuuming runs wil have to
be done, before a full vacuuming will be triggered, i.e. one with
a db-traversal.

similar to commit 0d997ec7e61a7bee2cb05456f9c7d5e6f7a44797.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovacuum: traverse the delete_queue befor traversing the database.
Michael Adam [Mon, 20 Dec 2010 16:25:35 +0000 (17:25 +0100)]
vacuum: traverse the delete_queue befor traversing the database.
(cherry picked from commit 04c335f9195a5fd83c91a57d06b1e4eaa511844e)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovacuum: add delete_queue_traverse() for traversal of the delete_queue.
Michael Adam [Mon, 20 Dec 2010 16:24:32 +0000 (17:24 +0100)]
vacuum: add delete_queue_traverse() for traversal of the delete_queue.
(cherry picked from commit 5eee05c4d256c08f4ee60a1a69efda6844e39729)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovacuum: reduce indentation in add_record_to_delete_tree()
Michael Adam [Tue, 21 Dec 2010 10:22:50 +0000 (11:22 +0100)]
vacuum: reduce indentation in add_record_to_delete_tree()

This simplyfies the logical structure a bit by using early return.
(cherry picked from commit 4d32908fdcec120426536a761e1d0be60f076198)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovacuum: refactor new add_record_to_delete_tree() out of vacuum_traverse().
Michael Adam [Mon, 20 Dec 2010 16:11:27 +0000 (17:11 +0100)]
vacuum: refactor new add_record_to_delete_tree() out of vacuum_traverse().

This will be reused by the traversal of the delete_queue list.
(cherry picked from commit 4407e5a7fb045ce56b6d902f7116de663ea648cb)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovacuum: skip adding records to list of records to send to lmaster on lmaster
Michael Adam [Mon, 20 Dec 2010 15:41:13 +0000 (16:41 +0100)]
vacuum: skip adding records to list of records to send to lmaster on lmaster

This list is skipped afterwards when the lists are processed.
(cherry picked from commit e99834c1a2eea60f7f974c0689ae0a65cfe178ff)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovacuum: refactor new add_record_to_vacuum_fetch_list() out of vacuum_traverse().
Michael Adam [Mon, 20 Dec 2010 15:31:27 +0000 (16:31 +0100)]
vacuum: refactor new add_record_to_vacuum_fetch_list() out of vacuum_traverse().

This is the function that fills the list of records to send to each lmaster
with the VACUUM_FETCH message.

This function will be reused in the traverse function for the delete_queue.
(cherry picked from commit d4ab790c1f679e833eb97816762fcfcee15ccb10)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agoserver: rename ctdb_repack_db() to ctdb_vacuum_and_repack_db()
Michael Adam [Mon, 20 Dec 2010 09:55:53 +0000 (10:55 +0100)]
server: rename ctdb_repack_db() to ctdb_vacuum_and_repack_db()
(cherry picked from commit 6c603f85726d2efac9710af7c4875ded2ca7230e)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agoWhen wiping a database, clear the delete_queue.
Michael Adam [Fri, 17 Dec 2010 01:22:02 +0000 (02:22 +0100)]
When wiping a database, clear the delete_queue.
(cherry picked from commit 731a6011ce4a1301f86eacb039955745f2b5d866)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovaccum: clear the fast-path vacuuming delete_queue after creating the vacuuming child.
Michael Adam [Fri, 17 Dec 2010 00:53:25 +0000 (01:53 +0100)]
vaccum: clear the fast-path vacuuming delete_queue after creating the vacuuming child.

Maybe we should keep a copy for the case that the vacuuming fails?
(cherry picked from commit f19fe5b45748a6998c6950a5b1db7ec2c4468c1c)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agoWhen attaching to a non-persistent DB, initialize the delete_queue.
Michael Adam [Fri, 17 Dec 2010 00:38:09 +0000 (01:38 +0100)]
When attaching to a non-persistent DB, initialize the delete_queue.
(cherry picked from commit 0aff1b61dd1b683c6739478008a5b014b933df50)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agoAdd a delete_queue to the ctdb database context struct.
Michael Adam [Wed, 22 Dec 2010 13:50:53 +0000 (14:50 +0100)]
Add a delete_queue to the ctdb database context struct.

This list will be filled by the client using a new
delete control. The list will then be used to implement
a fast-path vacuuming that will traverse this list instead
of traversing the database.

similar to commit 9bbedf786b26bb074f668b31f29a9032af958673.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agocall: becoming dmaster in VACUUM_MIGRATION, set the VACUUM_MIGRATED record flag
Michael Adam [Fri, 10 Dec 2010 13:11:38 +0000 (14:11 +0100)]
call: becoming dmaster in VACUUM_MIGRATION, set the VACUUM_MIGRATED record flag

This temporary flag is used for the local record storage function to
decide whether to delete an empty record which has never been migrated
with data as part of the fast-path vacuuming process or, or to store
the record.
(cherry picked from commit c11ca778ee90444c44dee0a629cd2eefa3a1f75e)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agocall: hand the submitted record_flags to local record storage function.
Michael Adam [Fri, 10 Dec 2010 13:07:21 +0000 (14:07 +0100)]
call: hand the submitted record_flags to local record storage function.
(cherry picked from commit 4079b8bf7a57a27a45d29784a1b0a414c778e552)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agocall: transfer the record flags in the ctdb call packets.
Michael Adam [Fri, 10 Dec 2010 13:02:33 +0000 (14:02 +0100)]
call: transfer the record flags in the ctdb call packets.

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>
(cherry picked from commit 945187d64cfc7bd30a0c3b0d548cbe582d95dde3)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agoserver: in the VACUUM_FETCH handler, add the VACUUM_MIGRAION to the call flags
Michael Adam [Fri, 10 Dec 2010 12:59:37 +0000 (13:59 +0100)]
server: in the VACUUM_FETCH handler, add the VACUUM_MIGRAION to the call flags

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...)
(cherry picked from commit fb5d832104970320359b3e474eb291ca3d629380)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agoadd a new record flag CTDB_REC_FLAG_VACUUM_MIGRATED.
Michael Adam [Fri, 10 Dec 2010 12:57:01 +0000 (13:57 +0100)]
add a new record flag CTDB_REC_FLAG_VACUUM_MIGRATED.

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.

similar to commit dd2449c422f323f9b5485e45107a9cc5acc09e08.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agocall: Move definition of call flags down to the definition of the flags field.
Michael Adam [Fri, 10 Dec 2010 13:22:55 +0000 (14:22 +0100)]
call: Move definition of call flags down to the definition of the flags field.

similar to commit 86c844fb08a7fd33e94f56b8d5e43278120e1162.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agocall: add new call flag CTDB_CALL_FLAG_VACUUM_MIGRATION
Michael Adam [Fri, 10 Dec 2010 13:24:40 +0000 (14:24 +0100)]
call: add new call flag CTDB_CALL_FLAG_VACUUM_MIGRATION

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.

similar to commit 455cc6616e10b7f09589f9b87cb60f591bb502b0.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agorecoverd: in a recovery, set the MIGRATED_WITH_DATA flag on all records
Michael Adam [Fri, 3 Dec 2010 14:24:06 +0000 (15:24 +0100)]
recoverd: in a recovery, set the MIGRATED_WITH_DATA flag on all records

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>
(cherry picked from commit 101be642e492a3a54231e2e3e6553a59380fe702)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agoserver: when we migrate off a record with data, set the MIGRATED_WITH_DATA flag
Michael Adam [Fri, 3 Dec 2010 14:21:51 +0000 (15:21 +0100)]
server: when we migrate off a record with data, set the MIGRATED_WITH_DATA flag
(cherry picked from commit f5fb232117886186066ab3430fdd2307cba94960)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agoAdd two new flags for the ltdb header.
Ronnie Sahlberg [Mon, 6 Dec 2010 02:08:53 +0000 (13:08 +1100)]
Add two new flags for the ltdb header.
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.

similar to commit e075670dee8e6ecaba54986f87a85be3d0528b6b.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agoRemove LACOUNT and LACCESSOR and migrate the records immediately.
Ronnie Sahlberg [Mon, 29 Nov 2010 02:07:59 +0000 (13:07 +1100)]
Remove LACOUNT and LACCESSOR and migrate the records immediately.

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.

similar to commit 155dd1f4885fe142c6f8bd09430f65daf8a17e51.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agoadd extra logging for failed ctdb_ltdb_unlock() for a few more places
Ronnie Sahlberg [Wed, 9 Jun 2010 04:31:05 +0000 (14:31 +1000)]
add extra logging for failed ctdb_ltdb_unlock() for a few more places
it is called from
(cherry picked from commit 5c0fea90c6474a51992a9c4aeb6af7dfeb213ee0)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovacuum: check lmaster against num_nodes instead of vnn_map->size
Michael Adam [Thu, 3 Feb 2011 11:15:41 +0000 (12:15 +0100)]
vacuum: check lmaster against num_nodes instead of vnn_map->size

When lmaster is bigger than the biggest recorded node number,
then exit the traverse with error.
(cherry picked from commit 3930c7796b72bbf275bbca8aaeceec3e705a964b)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovacuum: reduce indentation of the loop sending VACUUM_FETCH controls
Michael Adam [Thu, 3 Feb 2011 16:47:36 +0000 (17:47 +0100)]
vacuum: reduce indentation of the loop sending VACUUM_FETCH controls

This slightly improves the code structure in that loop.

similar to commit bc4990e600c53433a924a0d70e3488a5a6bdc1ff.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovacuum: correctly send TRY_DELETE_RECORDS ctrl to all active nodes
Michael Adam [Thu, 3 Feb 2011 11:26:45 +0000 (12:26 +0100)]
vacuum: correctly send TRY_DELETE_RECORDS ctrl to all active nodes

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.
(cherry picked from commit 49247df4a47a8a107fa7dd7b187e69e243e6bdbe)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agovacuum: in ctdb_vacuum_db, fix the length of the array of vacuum fetch lists
Michael Adam [Thu, 3 Feb 2011 11:18:58 +0000 (12:18 +0100)]
vacuum: in ctdb_vacuum_db, fix the length of the array of vacuum fetch lists

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.

similar to commit 136508e3f4dd0acc210dde938ad59ef38b63d3a1.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agoFix typos in a comment in vacuum_traverse.
Michael Adam [Mon, 20 Dec 2010 15:26:50 +0000 (16:26 +0100)]
Fix typos in a comment in vacuum_traverse.
(cherry picked from commit 6a4df8242ee4d095ff03229a168b83bcd84c8a7a)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agotests: fix segfault in store test when connection to ctdbd failed.
Michael Adam [Tue, 21 Dec 2010 16:18:03 +0000 (17:18 +0100)]
tests: fix segfault in store test when connection to ctdbd failed.
(cherry picked from commit 43a15d2906b3f9d08af234f55a3a0f614571d3a7)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agotests: fix segfault in fetch_one test when connection to ctdbd fails
Michael Adam [Tue, 21 Dec 2010 16:15:41 +0000 (17:15 +0100)]
tests: fix segfault in fetch_one test when connection to ctdbd fails
(cherry picked from commit 89c8e52de3878b8e29c6a24725eb66c18fd1f52a)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agotests: fix segfault in fetch test when connection to ctdb failed.
Michael Adam [Tue, 21 Dec 2010 16:14:33 +0000 (17:14 +0100)]
tests: fix segfault in fetch test when connection to ctdb failed.

similar to commit f493eb31abf956fd38347c2ff77026e380a9664d

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agotests: fix segfault in randrec test when connection to daemon fails.
Michael Adam [Tue, 21 Dec 2010 16:11:26 +0000 (17:11 +0100)]
tests: fix segfault in randrec test when connection to daemon fails.
(cherry picked from commit 715999d7ffbf10f3a57de3ee08a293165333553a)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
13 years agogitignore: add tags file ctdb-1.0.114-backports
Michael Adam [Fri, 3 Dec 2010 14:39:44 +0000 (15:39 +0100)]
gitignore: add tags file

13 years agogitignore: add vi swap files
Michael Adam [Fri, 3 Dec 2010 14:39:26 +0000 (15:39 +0100)]
gitignore: add vi swap files

13 years agoRemove prototype of non-existing function ctdb_set_max_lacount()
Michael Adam [Tue, 30 Nov 2010 16:09:09 +0000 (17:09 +0100)]
Remove prototype of non-existing function ctdb_set_max_lacount()

13 years agoserver: add a comment explaining the call redirect logic in ctdb_call_send_redirect().
Michael Adam [Wed, 24 Nov 2010 07:01:01 +0000 (08:01 +0100)]
server: add a comment explaining the call redirect logic in ctdb_call_send_redirect().

13 years agoconfig/interface_modify.sh: do the echo before running the script
Stefan Metzmacher [Mon, 12 Jul 2010 12:11:41 +0000 (14:11 +0200)]
config/interface_modify.sh: do the echo before running the script

metze
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
13 years agoconfig/interface_modify.sh: before calling a script check if it exists and is executable
Stefan Metzmacher [Mon, 12 Jul 2010 12:05:51 +0000 (14:05 +0200)]
config/interface_modify.sh: before calling a script check if it exists and is executable

For non bash shells $_s_script might end with '/*'.

We do the workarround this way, because it makes sense to check
that a script is executable, before trying to execute it.

metze

[ This actually applies to any shell -- Rusty Russell ]
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
13 years agoconfig/13.per_ip_routing: add CTDB_PER_IP_ROUTING_DEBUG option for debugging
Stefan Metzmacher [Wed, 10 Nov 2010 12:24:59 +0000 (13:24 +0100)]
config/13.per_ip_routing: add CTDB_PER_IP_ROUTING_DEBUG option for debugging

CTDB_DEBUGLEVEL=DEBUG also triggers CTDB_PER_IP_ROUTING_DEBUG=yes.

metze

13 years agoconfig/13.per_ip_routing: we don't need locks in generate_table_id() anymore
Stefan Metzmacher [Wed, 10 Nov 2010 11:11:49 +0000 (12:11 +0100)]
config/13.per_ip_routing: we don't need locks in generate_table_id() anymore

metze

13 years agoconfig/13.per_ip_routing: use a global flock for the events which need to do something
Stefan Metzmacher [Tue, 9 Feb 2010 15:31:50 +0000 (16:31 +0100)]
config/13.per_ip_routing: use a global flock for the events which need to do something

We call ourself recursively with the same args under the lock.

This hopefully prevents races where we endup with an empty
routing table for an ip.

metze

13 years agoRevert "config: let 13.per_ip_routing use a flock for generate_auto_link_local()"
Stefan Metzmacher [Wed, 10 Nov 2010 12:00:46 +0000 (13:00 +0100)]
Revert "config: let 13.per_ip_routing use a flock for generate_auto_link_local()"

This reverts commit dc2d0d0e559308ad2676f9ad973746c147d65eb9.

This is not needed anymore as we use a global flock for the whole event

metze

13 years agoevent.d/13.per_ip_routing: remember the result if we want to print it
Stefan Metzmacher [Wed, 10 Nov 2010 08:35:51 +0000 (09:35 +0100)]
event.d/13.per_ip_routing: remember the result if we want to print it

metze

13 years agoevents.d/11.routing: handle "updateip" event
Stefan Metzmacher [Tue, 19 Oct 2010 17:21:23 +0000 (19:21 +0200)]
events.d/11.routing: handle "updateip" event

metze

13 years agoserver/banning: also release all ips if we're banning ourself ctdb-1.0.114-reclock-fix
Stefan Metzmacher [Tue, 31 Aug 2010 07:28:34 +0000 (09:28 +0200)]
server/banning: also release all ips if we're banning ourself

metze

13 years agoserver/recoverd: if we can't get the recovery lock, ban ourself
Stefan Metzmacher [Mon, 30 Aug 2010 16:25:28 +0000 (18:25 +0200)]
server/recoverd: if we can't get the recovery lock, ban ourself

metze

13 years agoserver/recoverd: do takeover_run after verifying the reclock file
Stefan Metzmacher [Tue, 31 Aug 2010 06:42:32 +0000 (08:42 +0200)]
server/recoverd: do takeover_run after verifying the reclock file

metze

13 years agoserver/monitor: ask for a takeoverrun after propagating our new flags
Stefan Metzmacher [Tue, 24 Aug 2010 07:22:49 +0000 (09:22 +0200)]
server/monitor: ask for a takeoverrun after propagating our new flags

metze

14 years agonew version 1.0.114
Ronnie Sahlberg [Wed, 24 Mar 2010 06:21:10 +0000 (17:21 +1100)]
new version 1.0.114

14 years agoconfig: let 13.per_ip_routing use a flock for generate_auto_link_local()
Stefan Metzmacher [Fri, 26 Feb 2010 11:41:21 +0000 (12:41 +0100)]
config: let 13.per_ip_routing use a flock for generate_auto_link_local()

metze

14 years agoMerge commit 'obnox/master-rebase'
Ronnie Sahlberg [Thu, 11 Mar 2010 07:34:32 +0000 (18:34 +1100)]
Merge commit 'obnox/master-rebase'

14 years agoMerge root@10.1.1.27:/shared/ctdb/ctdb-git
Ronnie Sahlberg [Thu, 11 Mar 2010 07:15:41 +0000 (18:15 +1100)]
Merge root@10.1.1.27:/shared/ctdb/ctdb-git

14 years agoadjust a vacuum log level
Christian Ambach [Wed, 10 Mar 2010 17:46:15 +0000 (18:46 +0100)]
adjust a vacuum log level

made the severity of the decreasing interval log level the same as for the increasing,
they are both just info logs because they don't report errors

14 years agoctdb_setstatus in /etc/ctdb/functions was not working correctly because it was called...
Wolfgang Mueller-Friedt [Wed, 10 Mar 2010 09:39:31 +0000 (10:39 +0100)]
ctdb_setstatus in /etc/ctdb/functions was not working correctly because it was called with a wrong parameter list

14 years agopackaging: add tdbtool and tdbdump as dependencies to the RPM
Michael Adam [Wed, 24 Feb 2010 13:52:55 +0000 (14:52 +0100)]
packaging: add tdbtool and tdbdump as dependencies to the RPM

The init script relies on the existence.
This should fix bug #6773 on bugzilla.samba.org:
https://bugzilla.samba.org/show_bug.cgi?id=6773

Michael

14 years agodoc: regenerate ctdb(1) manpages after xml change
Michael Adam [Wed, 24 Feb 2010 13:52:04 +0000 (14:52 +0100)]
doc: regenerate ctdb(1) manpages after xml change

14 years agodoc: fix a linebreak in the example output of "ctdb getdbmap" in ctdb(1)
Michael Adam [Wed, 24 Feb 2010 13:50:37 +0000 (14:50 +0100)]
doc: fix a linebreak in the example output of "ctdb getdbmap" in ctdb(1)

14 years agoFix some more bashisms
Mathieu Parent [Thu, 4 Mar 2010 15:06:11 +0000 (16:06 +0100)]
Fix some more bashisms

14 years agoCorrect nice_service()
Mathieu Parent [Mon, 8 Mar 2010 20:19:35 +0000 (21:19 +0100)]
Correct nice_service()

nice takes a binary as argument and not a function or builtin command

14 years agodoc: regenerate ctdb and ctdb manpages after xml changes
Michael Adam [Wed, 24 Feb 2010 11:58:57 +0000 (12:58 +0100)]
doc: regenerate ctdb and ctdb manpages after xml changes

Michael

14 years agodoc: add metainfo "manual" and "source" in the ctdbd manual page
Michael Adam [Wed, 24 Feb 2010 11:53:21 +0000 (12:53 +0100)]
doc: add metainfo "manual" and "source" in the ctdbd manual page