| Age | Commit message (Collapse) | Author |
|
logical names with them); write explicit init/free functions for the
extent lists.
Fix bug where snapshot_avail extent list didn't have a name at all,
we attempted to print a NULL in VERBOSE mode.
|
|
closes #191
|
|
|
|
closes #191
|
|
Fix a couple more cases where we could return in bad places.
|
|
change underfoot if a key is instantiated by another thread of control:
closes #230.
|
|
|
|
from the new configuration options.
|
|
closes #221
|
|
refs #229
|
|
Create a transaction snapshot that is compatible instead.
refs #229
|
|
Don't allow new forced eviction requests while eviction is in progress.
|
|
where we especially want to notice if a thread of control is accessing
them after they've been free'd.
|
|
for re-allocation, if we allocate a block but then crash before updating the
metadata's snapshot information, we might overwrite a block referenced by a
snapshot in the system. Closes #226.
|
|
evict pages from the schema file. Close #189.
|
|
that way it sorts with the "statistics" config string, it's just easier to
understand that way.
|
|
|
|
transactions behind the current point, those updates would become invisible. Force eviction of pages (well) before that point to avoid the issue.
closes #222
|
|
If reconciliation fails, discard any pages we've written (directly
from the reconciliation code for any new pages we've written, and from
the tracking code for new overflow objects we've written).
Add a new tracking flag, WT_TRK_JUST_ADDED, set when an object is
first added to the tracking list, and cleared after the each successful
reconciliation of the page.
|
|
|
|
Add support for non-durable transactions.
closes #138
|
|
refs #138
|
|
refs #138
|
|
|
|
Conflicts:
src/include/api.h
src/session/session_api.c
|
|
refs #138
--HG--
rename : src/docs/using.dox => src/docs/admin.dox
rename : src/docs/using.dox => src/docs/programming.dox
rename : src/docs/snapshot.dox => src/docs/snapshots.dox
|
|
|
|
refs #138
|
|
closes #186
|
|
refs #214
As well as an optimization for pathological cases where clean pages in memory are more than 20x larger than their on-disk representation, this also avoids forced eviction during special operations such as verify.
|
|
refs #138
|
|
|
|
session close, we might race with the eviction thread reviewing it.
Change is to leave session hazard array references in place until
connection close, and to not clear the reference when closing the
session.
|
|
|
|
|
|
inside the serialization function, there's nothing to prevent threads
from racing when updating the request slot. Add a spinlock around the
update: there's no need for anything tricky, this function should not
be called very often.
|
|
within the serialization wrap-up function (and, if the page does need
to be forcibly evicted, the thread additionally schedules the eviction
and wakes the eviction server at the same time). The problem is the
thread is holding a hazard reference: if the eviction server not only
wakes up attempts to evict the page before the thread releases the
hazard reference, the eviction attempt will fail, and the cycle will
repeat infinitely in the tcbench program, at least on pixiebob (the
problem won't occur if the eviction thread doesn't make significant
progress before the thread releases its hazard reference). This is
unlikely to be an interesting performance problem, but it does affect
simple benchmarks where a single thread of control is inserting data as
quickly as possible, especially if the inserts are in ascending or
descending order.
Instead of checking for forcible eviction when a page is modified,
this check when a hazard reference is being released. Further, instead
of doing "size check, then schedule eviction, then wake eviction server,
then release hazard reference" do "size check, schedule eviction,
release hazard reference, wake eviction server"; this is required
because we can't release the hazard reference before scheduling the
eviction: if the hazard reference is the last one on the page, the page
might be gone before we schedule the eviction.
This simplifies some things: we no longer call the routine to
schedule an eviction inside a serialization function (there's no
significance to that other than simplifying the world a bit).
Finally, I removed the check for general cache size checking at
the same time as we were checking the individual page size. We check
the general cache size every time we read a page into memory, I don't
see why that isn't going to be sufficient.
|
|
|
|
but we now access the array of session handles directly. This means we
can no longer use the NULL vs. non-NULL test to know if a session handle
is active, add an active field that's non-zero if the session handle is
in use.
Stop shuffling the session array elements to keep them tightly packed:
allocate the lowest available slot we when allocating a new session,
decrement conn->session_cnt to the largest active slot when we close a
session.
|
|
|
|
|
|
--HG--
rename : src/txn/txn.c => src/include/txn.i
|
|
updates that have been rolled back).
|
|
refs #138
--HG--
rename : src/meta/meta_api.c => src/meta/meta_apply.c
|
|
|
|
reason for it to be maintained outside of the WT_SESSION_IMPL structure.
Move the hazard array into the WT_SESSION_IMPL structure, which makes
it easy to limit the hazard references being checked during eviction to
the set of active sessions.
|
|
array slots we have to walk during page evictions. Ref #186.
|
|
|
|
clang analysis.
|
|
|