Rev 709: a new tunable DatabaseMaxDead that enables the tdb max dead cache logic in http://samba.org/~tridge/ctdb

tridge at samba.org tridge at samba.org
Fri Jan 4 22:36:53 GMT 2008


------------------------------------------------------------
revno: 709
revision-id:tridge at samba.org-20080104223653-x79u692k7cqwbmo1
parent: tridge at samba.org-20080104223621-67b3uhfbx0ceakkn
committer: Andrew Tridgell <tridge at samba.org>
branch nick: tridge.kantana
timestamp: Sat 2008-01-05 09:36:53 +1100
message:
  a new tunable DatabaseMaxDead that enables the tdb max dead cache logic
modified:
  include/ctdb.h                 ctdb.h-20061117234101-o3qt14umlg9en8z0-11
  include/ctdb_private.h         ctdb_private.h-20061117234101-o3qt14umlg9en8z0-13
  server/ctdb_ltdb_server.c      ctdb_ltdb_server.c-20070607120348-7r182h0nlqxysyss-1
  server/ctdb_tunables.c         ctdb_tunables.c-20070604095258-4m34d7cm1qa7yos9-1
=== modified file 'include/ctdb.h'
--- a/include/ctdb.h	2007-11-29 23:00:04 +0000
+++ b/include/ctdb.h	2008-01-04 22:36:53 +0000
@@ -297,7 +297,36 @@
 	struct ctdb_ltdb_header *headers;
 	TDB_DATA *data;
 };
-int ctdb_ctrl_pulldb(struct ctdb_context *ctdb, uint32_t destnode, uint32_t dbid, uint32_t lmaster, TALLOC_CTX *mem_ctx, struct ctdb_key_list *keys);
+
+int ctdb_ctrl_pulldb(
+       struct ctdb_context *ctdb, uint32_t destnode, uint32_t dbid,
+       uint32_t lmaster, TALLOC_CTX *mem_ctx,
+       struct timeval timeout, TDB_DATA *outdata);
+
+struct ctdb_client_control_state *ctdb_ctrl_pulldb_send(
+       struct ctdb_context *ctdb, uint32_t destnode, uint32_t dbid,
+       uint32_t lmaster, TALLOC_CTX *mem_ctx, struct timeval timeout);
+
+int ctdb_ctrl_pulldb_recv(
+       struct ctdb_context *ctdb,
+       TALLOC_CTX *mem_ctx, struct ctdb_client_control_state *state,
+       TDB_DATA *outdata);
+
+int ctdb_ctrl_pushdb(
+       struct ctdb_context *ctdb, uint32_t destnode, uint32_t dbid,
+       TALLOC_CTX *mem_ctx,
+       struct timeval timeout, TDB_DATA indata);
+
+struct ctdb_client_control_state *ctdb_ctrl_pushdb_send(
+       struct ctdb_context *ctdb, uint32_t destnode, uint32_t dbid,
+       TALLOC_CTX *mem_ctx, struct timeval timeout,
+       TDB_DATA indata);
+
+int ctdb_ctrl_pushdb_recv(
+       struct ctdb_context *ctdb, TALLOC_CTX *mem_ctx,
+       struct ctdb_client_control_state *state);
+
+
 int ctdb_ctrl_copydb(struct ctdb_context *ctdb, 
 	struct timeval timeout, uint32_t sourcenode, 
 	uint32_t destnode, uint32_t dbid, uint32_t lmaster, 

=== modified file 'include/ctdb_private.h'
--- a/include/ctdb_private.h	2007-11-29 23:09:54 +0000
+++ b/include/ctdb_private.h	2008-01-04 22:36:53 +0000
@@ -86,6 +86,7 @@
 	uint32_t recovery_grace_period;
 	uint32_t recovery_ban_period;
 	uint32_t database_hash_size;
+	uint32_t database_max_dead;
 	uint32_t rerecovery_timeout;
 	uint32_t enable_bans;
 	uint32_t deterministic_public_ips;
@@ -1058,8 +1059,25 @@
 void ctdb_node_connected(struct ctdb_node *node);
 bool ctdb_blocking_freeze(struct ctdb_context *ctdb);
 int32_t ctdb_control_max_rsn(struct ctdb_context *ctdb, TDB_DATA indata, TDB_DATA *outdata);
+
+struct ctdb_client_control_state *ctdb_ctrl_set_rsn_nonempty_send(
+	struct ctdb_context *ctdb, TALLOC_CTX *mem_ctx, struct timeval timeout, 
+	uint32_t destnode, uint32_t db_id, uint64_t rsn);
+int ctdb_ctrl_set_rsn_nonempty_recv(struct ctdb_context *ctdb, 
+				    struct ctdb_client_control_state *state);
+int ctdb_ctrl_set_rsn_nonempty(struct ctdb_context *ctdb, struct timeval timeout, 
+			       uint32_t destnode, uint32_t db_id, uint64_t rsn);
+struct ctdb_client_control_state *ctdb_ctrl_delete_low_rsn_send(
+	struct ctdb_context *ctdb, TALLOC_CTX *mem_ctx, struct timeval timeout, 
+	uint32_t destnode, uint32_t db_id, uint64_t rsn);
+int ctdb_ctrl_delete_low_rsn_recv(struct ctdb_context *ctdb, 
+				  struct ctdb_client_control_state *state);
+int ctdb_ctrl_delete_low_rsn(struct ctdb_context *ctdb, struct timeval timeout, 
+			     uint32_t destnode, uint32_t db_id, uint64_t rsn);
+
 int32_t ctdb_control_set_rsn_nonempty(struct ctdb_context *ctdb, TDB_DATA indata, TDB_DATA *outdata);
 int32_t ctdb_control_delete_low_rsn(struct ctdb_context *ctdb, TDB_DATA indata, TDB_DATA *outdata);
+
 int ctdb_ctrl_get_max_rsn(struct ctdb_context *ctdb, struct timeval timeout, 
 			  uint32_t destnode, uint32_t db_id, uint64_t *max_rsn);
 int ctdb_ctrl_set_rsn_nonempty(struct ctdb_context *ctdb, struct timeval timeout, 

=== modified file 'server/ctdb_ltdb_server.c'
--- a/server/ctdb_ltdb_server.c	2007-09-21 03:47:40 +0000
+++ b/server/ctdb_ltdb_server.c	2008-01-04 22:36:53 +0000
@@ -260,6 +260,9 @@
 
 	DLIST_ADD(ctdb->db_list, ctdb_db);
 
+	/* setting this can help some high churn databases */
+	tdb_set_max_dead(ctdb_db->ltdb->tdb, ctdb->tunable.database_max_dead);
+
 	/* 
 	   all databases support the "null" function. we need this in
 	   order to do forced migration of records

=== modified file 'server/ctdb_tunables.c'
--- a/server/ctdb_tunables.c	2007-12-04 04:18:27 +0000
+++ b/server/ctdb_tunables.c	2008-01-04 22:36:53 +0000
@@ -42,6 +42,7 @@
 	{ "RecoveryGracePeriod", 60,  offsetof(struct ctdb_tunable, recovery_grace_period) },
 	{ "RecoveryBanPeriod",  300,  offsetof(struct ctdb_tunable, recovery_ban_period) },
 	{ "DatabaseHashSize", 10000,  offsetof(struct ctdb_tunable, database_hash_size) },
+	{ "DatabaseMaxDead",      5,  offsetof(struct ctdb_tunable, database_max_dead) },
 	{ "RerecoveryTimeout",   10,  offsetof(struct ctdb_tunable, rerecovery_timeout) },
 	{ "EnableBans",           1,  offsetof(struct ctdb_tunable, enable_bans) },
 	{ "DeterministicIPs",     1,  offsetof(struct ctdb_tunable, deterministic_public_ips) },



More information about the samba-cvs mailing list