MCPcopy Create free account
hub / github.com/F-Stack/f-stack / defragLaterItem

Function defragLaterItem

app/redis-6.2.6/src/defrag.c:951–973  ·  view source on GitHub ↗

returns 0 more work may or may not be needed (see non-zero cursor), * and 1 if time is up and more work is needed. */

Source from the content-addressed store, hash-verified

949/* returns 0 more work may or may not be needed (see non-zero cursor),
950 * and 1 if time is up and more work is needed. */
951int defragLaterItem(dictEntry *de, unsigned long *cursor, long long endtime) {
952 if (de) {
953 robj *ob = dictGetVal(de);
954 if (ob->type == OBJ_LIST) {
955 return scanLaterList(ob, cursor, endtime, &server.stat_active_defrag_hits);
956 } else if (ob->type == OBJ_SET) {
957 server.stat_active_defrag_hits += scanLaterSet(ob, cursor);
958 } else if (ob->type == OBJ_ZSET) {
959 server.stat_active_defrag_hits += scanLaterZset(ob, cursor);
960 } else if (ob->type == OBJ_HASH) {
961 server.stat_active_defrag_hits += scanLaterHash(ob, cursor);
962 } else if (ob->type == OBJ_STREAM) {
963 return scanLaterStreamListpacks(ob, cursor, endtime, &server.stat_active_defrag_hits);
964 } else if (ob->type == OBJ_MODULE) {
965 return moduleLateDefrag(dictGetKey(de), ob, cursor, endtime, &server.stat_active_defrag_hits);
966 } else {
967 *cursor = 0; /* object type may have changed since we schedule it for later */
968 }
969 } else {
970 *cursor = 0; /* object may have been deleted already */
971 }
972 return 0;
973}
974
975/* static variables serving defragLaterStep to continue scanning a key from were we stopped last time. */
976static sds defrag_later_current_key = NULL;

Callers 1

defragLaterStepFunction · 0.85

Calls 6

scanLaterListFunction · 0.85
scanLaterSetFunction · 0.85
scanLaterZsetFunction · 0.85
scanLaterHashFunction · 0.85
scanLaterStreamListpacksFunction · 0.85
moduleLateDefragFunction · 0.85

Tested by

no test coverage detected