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

Only flush dirty data during checkpoints if logging is disabled

    • Type: Icon: Bug Bug
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • WT10.0.0, 4.4.0-rc6, 4.7.0
    • Affects Version/s: None
    • Component/s: None
    • None
    • 8
    • Execution Team 2019-11-18, Storage Engines 2020-03-23, Storage Engines 2020-04-06, Storage - Ra 2020-04-20, Storage - Ra 2020-05-04, Storage - Ra 2020-05-18
    • v4.4

      For WT_SESSION::verify (or other operations that need exclusive access to a file such as WT_SESSION::salvage), a change was made in WT-4070 to disallow closing trees if they are dirty and a stable timestamp is set:

      	/*
      	 * Don't flush data from trees when there is a stable timestamp set:
      	 * that can lead to files that are inconsistent on disk after a crash.
      	 */
      	if (btree->modified && !bulk &&
      	    S2C(session)->txn_global.has_stable_timestamp &&
      	    !__wt_btree_immediately_durable(session))
      		return (__wt_set_return(session, EBUSY));
      

      daniel.gottlieb raises the point is that this change is only effective when a stable timestamp has been set. When there will be no stable timestamp and if logging is disabled, crashing during/soon after a verify could leave data inconsistent on disk.

      Given that, the test above should be extended to also return EBUSY for modified, non-bulk trees when global logging is disabled.

        1. WT-4414.diff
          2 kB
          Gregory Wlodarek

            Assignee:
            haseeb.bokhari@mongodb.com Haseeb Bokhari (Inactive)
            Reporter:
            michael.cahill@mongodb.com Michael Cahill (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            11 Start watching this issue

              Created:
              Updated:
              Resolved: