Merge pull request #6267 from soloestoy/opt-claim-trackingtable

Client side caching: do not reclaim tracking table if it's empty
This commit is contained in:
Salvatore Sanfilippo 2019-07-23 09:43:41 +02:00 committed by GitHub
commit 47ce1cebeb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -206,8 +206,6 @@ void trackingInvalidateKey(robj *keyobj) {
* flush the table: it will slowly get garbage collected as more keys * flush the table: it will slowly get garbage collected as more keys
* are modified in the used caching slots. */ * are modified in the used caching slots. */
void trackingInvalidateKeysOnFlush(int dbid) { void trackingInvalidateKeysOnFlush(int dbid) {
UNUSED(dbid);
if (server.tracking_clients) { if (server.tracking_clients) {
listNode *ln; listNode *ln;
listIter li; listIter li;
@ -222,12 +220,11 @@ void trackingInvalidateKeysOnFlush(int dbid) {
/* In case of FLUSHALL, reclaim all the memory used by tracking. */ /* In case of FLUSHALL, reclaim all the memory used by tracking. */
if (dbid == -1 && TrackingTable) { if (dbid == -1 && TrackingTable) {
for (int j = 0; j < TRACKING_TABLE_SIZE; j++) { for (int j = 0; j < TRACKING_TABLE_SIZE && TrackingTableUsedSlots > 0; j++) {
if (TrackingTable[j] != NULL) { if (TrackingTable[j] != NULL) {
raxFree(TrackingTable[j]); raxFree(TrackingTable[j]);
TrackingTable[j] = NULL; TrackingTable[j] = NULL;
TrackingTableUsedSlots--; TrackingTableUsedSlots--;
if (TrackingTableUsedSlots == 0) break;
} }
} }