MCPcopy Create free account
hub / github.com/Snapchat/KeyDB / zslUpdateNode

Function zslUpdateNode

src/defrag.cpp:204–218  ·  view source on GitHub ↗

Internal function used by zslDefrag */

Source from the content-addressed store, hash-verified

202
203/* Internal function used by zslDefrag */
204void zslUpdateNode(zskiplist *zsl, zskiplistNode *oldnode, zskiplistNode *newnode, zskiplistNode **update) {
205 int i;
206 for (i = 0; i < zsl->level; i++) {
207 if (update[i]->level(i)->forward == oldnode)
208 update[i]->level(i)->forward = newnode;
209 }
210 serverAssert(zsl->header!=oldnode);
211 if (newnode->level(0)->forward) {
212 serverAssert(newnode->level(0)->forward->backward==oldnode);
213 newnode->level(0)->forward->backward = newnode;
214 } else {
215 serverAssert(zsl->tail==oldnode);
216 zsl->tail = newnode;
217 }
218}
219
220/* Defrag helper for sorted set.
221 * Update the robj pointer, defrag the skiplist struct and return the new score

Callers 1

zslDefragFunction · 0.85

Calls 1

levelMethod · 0.80

Tested by

no test coverage detected