diff options
author | Ronnie Sahlberg <ronniesahlberg@gmail.com> | 2011-11-08 06:55:46 +1100 |
---|---|---|
committer | Ronnie Sahlberg <ronniesahlberg@gmail.com> | 2011-11-08 16:08:28 +1100 |
commit | 0e79b2d1e8befcc8924112faeb785b0648f35c43 (patch) | |
tree | a1130ebbc3a6c2c6bf4a95ac26dc47264dba03f6 /ctdb/server/ctdb_ltdb_server.c | |
parent | 8db9b73920da63c9eaa0822c9dd550714484fa13 (diff) | |
download | samba-0e79b2d1e8befcc8924112faeb785b0648f35c43.tar.gz samba-0e79b2d1e8befcc8924112faeb785b0648f35c43.tar.xz samba-0e79b2d1e8befcc8924112faeb785b0648f35c43.zip |
Record Fetch Collapse: Collapse multiple fetch request into one single request.
When multiple clients fetch the same record concurrently, send only one single
fetch across the network and deferr all other fetches locally.
This improves performance for hot records and reduces cpu load on ctdb.
(This used to be ctdb commit 82d6946ad8b3348e8b9d3d971f24925ade02d1be)
Diffstat (limited to 'ctdb/server/ctdb_ltdb_server.c')
-rw-r--r-- | ctdb/server/ctdb_ltdb_server.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/ctdb/server/ctdb_ltdb_server.c b/ctdb/server/ctdb_ltdb_server.c index 745b3d256bc..713606d7593 100644 --- a/ctdb/server/ctdb_ltdb_server.c +++ b/ctdb/server/ctdb_ltdb_server.c @@ -962,6 +962,17 @@ again: } } + /* set up a rb tree we can use to track which records we have a + fetch-lock in-flight for so we can defer any additional calls + for the same record. + */ + ctdb_db->deferred_fetch = trbt_create(ctdb_db, 0); + if (ctdb_db->deferred_fetch == NULL) { + DEBUG(DEBUG_ERR,("Failed to create deferred fetch rb tree for ctdb database\n")); + talloc_free(ctdb_db); + return -1; + } + DLIST_ADD(ctdb->db_list, ctdb_db); /* setting this can help some high churn databases */ |