Uploaded image for project: 'WiredTiger'
  1. WiredTiger
  2. WT-2537

cannot open DB written by WT2.6.1 with WT2.8.0 due to WT_NOTFOUND on recovery

    • Type: Icon: Bug Bug
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • WT2.9.0
    • Affects Version/s: None
    • Component/s: None
    • None

      Hi!

      We have a DB that was created using WT 2.6.1
      Usually it was used with txn logging, but the last time was opened without it to speed-up some bulk operation.

      When I tried to open it with WT2.8.0 (w/ logging enabled) I got WT_NOTFOUND error from wiredtiger_open().

      I'll attach small demo program:

      $ gcc -I /home/sbn/src/wiredtiger-2.6.1 -L /home/sbn/src/wiredtiger-2.6.1/.libs -lwiredtiger notfound-on-open.c -o notfound-on-open
      $ LD_LIBRARY_PATH=/home/sbn/src/wiredtiger-2.6.1/.libs ./notfound-on-open
      $ /home/sbn/src/wiredtiger-2.6.1/wt -h notfound-on-open.db/ list -v
      metadata:
      allocation_size=4KB,app_metadata=,block_allocation=best,block_compressor=,cache_resident=0,checkpoint=(WiredTigerCheckpoint.1=(addr="",order=1,time=1460027377,size=0,write_gen=0)),checkpoint_lsn=(4294967295,9223372036854775807),checksum=uncompressed,collator=,columns=,dictionary=0,encryption=(keyid=,name=),format=btree,huffman_key=,huffman_value=,id=0,internal_item_max=0,internal_key_max=0,internal_key_truncate=,internal_page_max=4KB,key_format=S,key_gap=10,leaf_item_max=0,leaf_key_max=0,leaf_page_max=32KB,leaf_value_max=0,log=(enabled=),memory_page_max=5MB,os_cache_dirty_max=0,os_cache_max=0,prefix_compression=0,prefix_compression_min=4,split_deepen_min_child=0,split_deepen_per_child=0,split_pct=75,value_format=S,version=(major=1,minor=1)
      $ /home/sbn/src/wiredtiger-2.8.0/wt -h notfound-on-open.db/ -C 'log=(enabled)' list -v
      [1460027438:435026][4746:0x7f4dcecc5700], txn-recover: Recovery failed: WT_NOTFOUND: item not found
      lt-wt: WT_NOTFOUND: item not found
      

      AFAIU from WT code problem is in checkpoint_lsn=(4294967295,9223372036854775807) which was set by WT2.6.1 after checkpoint w/o txn logs.
      But in 2.8.0 WT_LSN was changed to have 32-bit offset so this value isn't recognized as MAX_LSN anymore.

      Seems the workaround is to just open DB w/ wt utility from 2.8.0 with log disabled.

      Thanks!

            Assignee:
            sue.loverso@mongodb.com Susan LoVerso
            Reporter:
            Dmitri Shubin Dmitri Shubin
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: