Cache metadata cursors internally

XMLWordPrintableJSON

    • Type: Improvement
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: Cursors
    • None
    • Storage Engines, Storage Engines - Foundations
    • 460.71
    • None
    • None

      We explicitly do not cache metadata cursors:

          /* Cursors on metadata should not be cached, doing so interferes with named checkpoints. */
          if (cacheable && strcmp(WT_METAFILE_URI, cursor->internal_uri) != 0)
              F_SET(cursor, WT_CURSTD_CACHEABLE); 

      We should understand this and see if this is still the case. There's more going on, because if we remove the metadata check and run test_base01.py, we get a bad access here:

       frame #0: 0x0000000105ef5154 libwiredtiger.12.0.0.dylib`__wt_atomic_load_uint64_v_relaxed(vp=0x0000000000000008) at gcc.h:398:1
          frame #1: 0x0000000105ef4f40 libwiredtiger.12.0.0.dylib`__wt_txn_release_snapshot(session=0x00000007f8588000) at txn.c:102:5
          frame #2: 0x0000000105aede20 libwiredtiger.12.0.0.dylib`__wt_txn_read_last(session=0x00000007f8588000) at txn_inline.h:2328:9
          frame #3: 0x0000000105ae2ca8 libwiredtiger.12.0.0.dylib`__cursor_reset(cbt=0x00000007f9579400) at cursor_inline.h:279:9
          frame #4: 0x0000000105aea1ac libwiredtiger.12.0.0.dylib`__wt_btcur_close(cbt=0x00000007f9579400, lowlevel=false) at bt_cursor.c:1991:15
          frame #5: 0x0000000105c9d628 libwiredtiger.12.0.0.dylib`__curfile_close(cursor=0x00000007f9579400) at cur_file.c:639:5
          frame #6: 0x0000000105e5e65c libwiredtiger.12.0.0.dylib`__session_close_cursors(session=0x00000007f8588000, cursors=0x00000007f8082420) at session_api.c:280:9
          frame #7: 0x0000000105e5e7b8 libwiredtiger.12.0.0.dylib`__session_close_cached_cursors(session=0x00000007f8588000) at session_api.c:300:9
          frame #8: 0x0000000105e5d258 libwiredtiger.12.0.0.dylib`__wt_session_close_internal(session=0x00000007f8588000) at session_api.c:380:5
          frame #9: 0x0000000105c5afb4 libwiredtiger.12.0.0.dylib`__wti_connection_close(conn=0x00000007f805c000) at conn_open.c:187:9
          frame #10: 0x0000000105c18770 libwiredtiger.12.0.0.dylib`__conn_close(wt_conn=0x00000007f805c000, config=0x0000000000000000) at conn_api.c:1295:5
      

      If this can be fixed, we should see if we can tighten up the python test in changes from WT-17124. Right now, it has a lot of slop in calculating the number of cursors that should be created vs cached because of the metadata cursors that cannot be cached.

            Assignee:
            [DO NOT USE] Backlog - Storage Engines Team
            Reporter:
            Donald Anderson
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: