[Groonga-commit] groonga/groonga at 7d32491 [master] ii: fix unexpected "invalid cursor error"

Back to archive index

Kouhei Sutou null+****@clear*****
Mon Oct 17 23:14:33 JST 2016


Kouhei Sutou	2016-10-17 23:14:33 +0900 (Mon, 17 Oct 2016)

  New Revision: 7d32491e824e70a7193e6847a37beab76c2a5b21
  https://github.com/groonga/groonga/commit/7d32491e824e70a7193e6847a37beab76c2a5b21

  Message:
    ii: fix unexpected "invalid cursor error"
    
    CHUNK_USED flag is missing when min skip is used.
    
    Error log:
    
        [ii][cursor][heap][push] invalid cursor: %p
    
    https://gitter.im/groonga/ja?at=57f2ff87d45d7f0f525e2216
    
    Reported by torinky. Thanks!!!

  Modified files:
    lib/ii.c

  Modified: lib/ii.c (+7 -2)
===================================================================
--- lib/ii.c    2016-10-17 19:08:20 +0900 (9523cf7)
+++ lib/ii.c    2016-10-17 23:14:33 +0900 (e609e92)
@@ -4957,16 +4957,21 @@ grn_ii_cursor_set_min(grn_ctx *ctx, grn_ii_cursor *c, grn_id min)
       }
       if (skip_chunk > c->curr_chunk) {
         uint32_t old_chunk = c->curr_chunk;
+        grn_bool old_chunk_used = (c->stat & CHUNK_USED);
         c->pc.rid = rid;
         c->pc.rest = 0;
         c->prev_chunk_rid = rid - c->cinfo[skip_chunk - 1].dgap;
         c->curr_chunk = skip_chunk;
         c->crp = c->cdp + c->cdf;
+        c->stat |= CHUNK_USED;
         GRN_LOG(ctx, GRN_LOG_DEBUG,
-                "[ii][cursor][min] skip: %p: min(%u->%u): chunk(%u->%u)",
+                "[ii][cursor][min] skip: %p: min(%u->%u): chunk(%u->%u): "
+                "chunk-used(%s->%s)",
                 c,
                 old_min, min,
-                old_chunk, c->curr_chunk);
+                old_chunk, c->curr_chunk,
+                old_chunk_used ? "true" : "false",
+                (c->stat & CHUNK_USED) ? "true" : "false");
       }
     }
   }
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index