summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/src/include/meta.h
diff options
context:
space:
mode:
authorLuke Chen <luke.chen@mongodb.com>2019-06-14 13:56:58 +1000
committerLuke Chen <luke.chen@mongodb.com>2019-06-14 13:56:58 +1000
commit518f382a78f904b2e7adf8ac36acc3a34a82fb4f (patch)
tree9b40350606570fdcea425ade967855ebb8d707de /src/third_party/wiredtiger/src/include/meta.h
parentfab9fde6ba3e08b710b07a42c82b635b1b31c989 (diff)
downloadmongo-518f382a78f904b2e7adf8ac36acc3a34a82fb4f.tar.gz
Import wiredtiger: 40e3225e55ffbf0c9819af138fa4a014c0639c72 from branch mongodb-4.2
ref: 9b85ad8968..40e3225e55 for: 4.3.1 WT-4477 Add eviction debug mode and extra checks WT-4494 Support import of of standalone WiredTiger files WT-4580 Abort transactions that perform updates with ignore_prepare=true WT-4719 Non-zero update count detected when committing prepared transaction WT-4787 Coverity: Potential infinite loops WT-4790 Coverity: Memory leak within __wt_curbulk_init WT-4827 Apply commit timestamps when a truncated page is read WT-4829 File names are generated incorrectly in operation tracking scripts WT-4837 Disabled cache during verify WT-4839 Add a feature to python testsuite to run a random subset of tests WT-4844 Only log an informational message when a set read-timestamp is older than the oldest timestamp WT-4848 Fix perf regression when calculating differences WT-4850 Fix __slvg_checkpoint() metadata memory leak WT-4851 heap-use-after-free when block manager grows buffer during final checkpoint WT-4852 Evergreen runs of test/format require shared library extensions WT-4853 Standalone recovery code cannot handle deleted checkpoints WT-4854 wt utility list command has a memory leak and minor error handling bugs WT-4855 WiredTiger recovery should detect files without unique IDs WT-4859 Fix test/format program path issue for endian tests
Diffstat (limited to 'src/third_party/wiredtiger/src/include/meta.h')
-rw-r--r--src/third_party/wiredtiger/src/include/meta.h22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/third_party/wiredtiger/src/include/meta.h b/src/third_party/wiredtiger/src/include/meta.h
index 0b08b318c3d..ac9e0be3c20 100644
--- a/src/third_party/wiredtiger/src/include/meta.h
+++ b/src/third_party/wiredtiger/src/include/meta.h
@@ -66,9 +66,19 @@
struct __wt_ckpt {
char *name; /* Name or NULL */
- WT_ITEM addr; /* Checkpoint cookie string */
- WT_ITEM raw; /* Checkpoint cookie raw */
-
+ /*
+ * Each internal checkpoint name is appended with a generation
+ * to make it a unique name. We're solving two problems: when
+ * two checkpoints are taken quickly, the timer may not be
+ * unique and/or we can even see time travel on the second
+ * checkpoint if we snapshot the time in-between nanoseconds
+ * rolling over. Second, if we reset the generational counter
+ * when new checkpoints arrive, we could logically re-create
+ * specific checkpoints, racing with cursors open on those
+ * checkpoints. I can't think of any way to return incorrect
+ * results by racing with those cursors, but it's simpler not
+ * to worry about it.
+ */
int64_t order; /* Checkpoint order */
uint64_t sec; /* Wall clock time */
@@ -77,6 +87,9 @@ struct __wt_ckpt {
uint64_t write_gen; /* Write generation */
+ char *block_metadata; /* Block-stored metadata */
+ char *block_checkpoint; /* Block-stored checkpoint */
+
/* Validity window */
wt_timestamp_t newest_durable_ts;
wt_timestamp_t oldest_start_ts;
@@ -84,6 +97,9 @@ struct __wt_ckpt {
wt_timestamp_t newest_stop_ts;
uint64_t newest_stop_txn;
+ WT_ITEM addr; /* Checkpoint cookie string */
+ WT_ITEM raw; /* Checkpoint cookie raw */
+
void *bpriv; /* Block manager private */
/* AUTOMATIC FLAG VALUE GENERATION START */