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

Function defragStream

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

Source from the content-addressed store, hash-verified

773}
774
775long defragStream(redisDb *db, dictEntry *kde) {
776 long defragged = 0;
777 robj *ob = dictGetVal(kde);
778 serverAssert(ob->type == OBJ_STREAM && ob->encoding == OBJ_ENCODING_STREAM);
779 stream *s = ob->ptr, *news;
780
781 /* handle the main struct */
782 if ((news = activeDefragAlloc(s)))
783 defragged++, ob->ptr = s = news;
784
785 if (raxSize(s->rax) > server.active_defrag_max_scan_fields) {
786 rax *newrax = activeDefragAlloc(s->rax);
787 if (newrax)
788 defragged++, s->rax = newrax;
789 defragLater(db, kde);
790 } else
791 defragged += defragRadixTree(&s->rax, 1, NULL, NULL);
792
793 if (s->cgroups)
794 defragged += defragRadixTree(&s->cgroups, 1, defragStreamConsumerGroup, NULL);
795 return defragged;
796}
797
798/* Defrag a module key. This is either done immediately or scheduled
799 * for later. Returns then number of pointers defragged.

Callers 1

defragKeyFunction · 0.85

Calls 4

activeDefragAllocFunction · 0.85
raxSizeFunction · 0.85
defragLaterFunction · 0.85
defragRadixTreeFunction · 0.85

Tested by

no test coverage detected