mirror of
https://github.com/samba-team/samba.git
synced 2025-02-26 21:57:41 +03:00
FETCH COLLAPSE : Change the fetch-lock collapse to collapse ALL fetches, including fetch-locks into a single command in flight per record. Also add a tunable to enable/disable this optimization for hot records
(This used to be ctdb commit eafd7bbaaa5931546a96c8beae3cf9a39a49c925)
This commit is contained in:
parent
038c946e80
commit
c051f67d67
@ -125,6 +125,7 @@ struct ctdb_tunable {
|
||||
uint32_t allow_client_db_attach;
|
||||
uint32_t recover_pdb_by_seqnum;
|
||||
uint32_t deferred_rebalance_on_node_add;
|
||||
uint32_t fetch_collapse;
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -673,11 +673,12 @@ static void daemon_request_call_from_client(struct ctdb_client *client,
|
||||
return;
|
||||
}
|
||||
|
||||
if (c->flags & CTDB_IMMEDIATE_MIGRATION) {
|
||||
/* check if this fetch-lock request is a duplicate for a
|
||||
request we already have in flight. If so defer it until
|
||||
the first request completes.
|
||||
*/
|
||||
|
||||
/* check if this fetch request is a duplicate for a
|
||||
request we already have in flight. If so defer it until
|
||||
the first request completes.
|
||||
*/
|
||||
if (ctdb->tunable.fetch_collapse == 1) {
|
||||
if (requeue_duplicate_fetch(ctdb_db, client, key, c) == 0) {
|
||||
ret = ctdb_ltdb_unlock(ctdb_db, key);
|
||||
if (ret != 0) {
|
||||
@ -790,7 +791,7 @@ static void daemon_request_call_from_client(struct ctdb_client *client,
|
||||
state = ctdb_call_local_send(ctdb_db, call, &header, &data);
|
||||
} else {
|
||||
state = ctdb_daemon_call_send_remote(ctdb_db, call, &header);
|
||||
if (call->flags & CTDB_IMMEDIATE_MIGRATION) {
|
||||
if (ctdb->tunable.fetch_collapse == 1) {
|
||||
/* This request triggered a remote fetch-lock.
|
||||
set up a deferral for this key so any additional
|
||||
fetch-locks are deferred until the current one
|
||||
|
@ -73,7 +73,8 @@ static const struct {
|
||||
{ "DeferredAttachTO", 120, offsetof(struct ctdb_tunable, deferred_attach_timeout), false },
|
||||
{ "AllowClientDBAttach", 1, offsetof(struct ctdb_tunable, allow_client_db_attach), false },
|
||||
{ "RecoverPDBBySeqNum", 0, offsetof(struct ctdb_tunable, recover_pdb_by_seqnum), false },
|
||||
{ "DeferredRebalanceOnNodeAdd", 300, offsetof(struct ctdb_tunable, deferred_rebalance_on_node_add) }
|
||||
{ "DeferredRebalanceOnNodeAdd", 300, offsetof(struct ctdb_tunable, deferred_rebalance_on_node_add) },
|
||||
{ "FetchCollapse", 1, offsetof(struct ctdb_tunable, fetch_collapse) }
|
||||
};
|
||||
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user