| Age | Commit message (Collapse) | Author |
|
refs #1582
|
|
|
|
the OS layer if a file handle has a mapping and ftruncate is called.
Change exclusive operations to close all open connection handles for a file
object before performing the operation.
Reference #1254.
|
|
that return and a few other similar values.
|
|
consistently.
|
|
Move lang/java and lang/python into the public domain.
|
|
|
|
Also add some statistics to the log slot code.
|
|
that views page modification/reconciliation information, compaction and
reconciliation both lock the page.
|
|
|
|
other purpose, keep the compiler quiet in those cases.
|
|
|
|
|
|
|
|
|
|
child page in diagnostic runs, and to save the previous state of the page in
the WT_RECONCILE structure. This is what I've been using to debug #419.
|
|
I needed a return version, which made 3, but we only have 2 cases: (1)
one that returns WT_PANIC without any error value for the associated
message, and (2) one that doesn't return WT_PANIC (ever), but does have
an error value for the associated message.
Case #1 is now WT_PANIC_ERR, case #2 is WT_PANIC_RETX, and that leaves
WT_PANIC_ERRX for a version that doesn't return WT_PANIC (ever) but does
have an error value for the associated message, and WT_PANIC_RET for a
version that returns WT_PANIC and has an error value for the associated
message, if we ever need them.
|
|
server thread work. The last set of changes had (at least) two
problems:
First, the test to avoid selecting a dirty page for eviction was
insufficient. It appeared in __evict_walk_file, which is before
eviction has exclusive access, the test should still appear there to
avoid selecting pages there is no hope of evicting, but should also
appear in __rec_review after the page is locked down to ensure no pages
modified after selection, but before final review, are written.
Second, the test to avoid selecting a dirty page for eviction wasted
performance because we couldn't select a page ever considered for
modification (regardless of whether or not it was actually modified),
because racing with the checkpoint thread reviewing an internal page
that referenced the evicted page could drop core when the evicted page's
modification structure disappeared.
This set of changes adds a test in __rec_review to resolve the first
problem.
The second problem is trickier, and messes with page states (oh joy!).
The key is to inform page reconciliation if it's being called by the
eviction server thread or a checkpoint thread. In the case of being
called by the eviction server thread, any child page of an internal page
that's in the WT_REF_LOCKED state is in a stable, in-memory state,
because the calling thread set the WT_REF_LOCKED state. In the case of
being called by the checkpoint thread, any child page of an internal
page that's in the WT_REF_LOCKED state is in a temporary state because
it's been locked by eviction. It will either be evicted (and the page
state reset to WT_REF_DISK), or skipped (and the page state reset to
WT_REF_MEM). Regardless, the reconciliation within the checkpoint
thread has to wait on that state change.
This is all built on top of a set of flags passed into reconciliation,
which additionally offers better control over skipping updates on a
page. We now explicitly flag if reconciliation should (1) quit early
if unable to entirely clean a page, set by the eviction code, (2) panic
if it's unable to entirely clean a page, set by sync during file close
and by salvage, or (3) not worry about it, set by the checkpoint passes.
Reference #419.
|
|
documented.
|
|
|
|
|
|
avoid stalling application threads.
|
|
off, add support for verbose and cache size.
|
|
session.checkpoint method, ref #235.
Add the "target" configuration to checkpoint, specifies a list of
targets to be checkpointed; checkpointing a list of targets is the
same as checkpointing a database, that is, the checkpoint is a set
of consistent snapshots.
Re-write the checkpoint mehtod documentation to list the new target
config string.
Make __wt_schema_worker signature match __wt_conn_btree_apply, and
__wt_meta_btree_apply (the cfg argument follows the func argument).
Remove cursor declaration in __wt_txn_checkpoint() it's never used.
Add WT_ERR_NOTFOUND_OK macro, allows and corrects WT_NOTFOUND return.
|
|
Fix a couple more cases where we could return in bad places.
|
|
|
|
instead of having snapshots read/write the turtle file, change the metadata
routines to read certain, specific key/value pairs from the turtle file, see
issue #192.
|
|
a thread trying to use them.
|
|
To avoid a freed page pointer ending up on the request list, check the page state while holding the LRU lock before putting it one the request list.
In __rec_excl_page(), we can write dirty pages after we acquire the exclusive lock -- if we can't get an exclusive lock, it means somebody else is in that part of the tree, so there's no urgency in doing the write, and if we can get the exclusive write, then we know the page will be clean when we get to the end.
Instead of copying all hazard references in the system in order to check for a conflict, just do a linear search for the reference we are interested in.
Take more care with forced eviction: keep the page in either WT_REF_EVICTING or WT_REF_LOCKED states so that application threads drain and eviction is not starved.
|
|
|
|
* error handling: use of WT_RET in functions that are only expected to return a boolean (e.g., WT_REF(__wt_realloc(...)) in __hazard_exclusive.
Switch to zero for success and EBUSY if the page is already locked. This shouldn't make it out to applications but at least is from the same namespace as ENOMEM or other system errors.
* two threads calling __hazard_exclusive concurrently were sharing memory in cache->hazard, with unpredictable results.
* the WT_REF_LOCKED state was being used for multiple things. Add a WT_REF_EVICTING state to prevent multiple threads choosing the same page from the eviction queue.
|
|
Change the copyright check script to always use the current year.
Change the example code copyright notices to document them as freeware,
anybody using WiredTiger example code is free to use it in any way they
choose, including commercially, WiredTiger claims no rights in such a
copy.
Minor re-ordering of the standard copyright notice so the preamble is
always the copyright notice itself, not the mention of the LICENSE file.
|
|
--HG--
rename : src/include/debug.h => src/include/error.h
|