| Age | Commit message (Collapse) | Author |
|
|
|
the list of pages selected for LRU evction.
|
|
|
|
'gettimeofday'
|
|
|
|
lists to support persistent snapshots.
|
|
don't check if WT_PAGE.modify is NULL before calling it, the function
checks.
|
|
|
|
from the whole close/sync dichotomy.
|
|
|
|
|
|
isn't running.
|
|
__wt_conn_btree_close, apart from the conn->close case which is inherently single-threaded.
|
|
them.
Use a separate spinlock in the OS layer to manage lists of file handles so that we can safely call close while holding the general purpose connection spinlock.
Fixes test failures in test_base02 (among others).
refs #178
|
|
conn_XXX_btree.
|
|
The underlying problem is btree files weren't completely closed before
they could be re-opened. This behavior can be triggered by using a
new session on every operation (see the new -S flag to the test/thread
program). Instead of repeating the dance we do on open, I'm leaving
the btree handles in the connection list for the life of the connection.
The reason I'm going in this direction is that any application that opens
new sessions on each operation (for example, simple scripting language
APIs), will be doing file I/O on every open, and I'd rather avoid that.
(In other words, performance will just suck, instead of being unusable:
it's about 60% slower at the moment).
Most applications don't operate on enough files to care that files aren't
actually discarded, but if you have a long-lived application that opens
thousands of unique files, this approach will eventually see problems
(long file open times as the list of files gets long, and file-descriptor
consumption).
Detailed changes:
When connections are closed, create a session and discard the btree
handles. I think this fixes a long-standing bug in closing a connection,
that, for any reason, still has open btree handles, we'd drop core when we
tried to evict the pages because we were closing them using the default
session handle. I don't see any reason we can't allocate a new session
during connection->close, but this is worth careful review.
Change the session close of a btree to be a reference decrement, and
nothing else. (We don't need the reference right now, but any future
house-cleaning solution will likely need a reference count, so I'm
leaving it in.)
Change __wt_session_lock_btree() to always re-open the tree, even if
it's the first time the session is opening the file. Now that we're
caching handles in the connection layer, there's no reason to believe
the existing handle is open in any particular configuration.
Move set/clear of the WT_BTREE_OPEN flag into the connection btree handle
code, it's cleaner. I actually don't think we need the WT_BTREE_OPEN flag
any longer, but I'm not totally convinced of that, and we may need it when
we do cleanup.
|
|
a thread trying to use them.
|
|
|
|
|
|
page reference (unblocking the waiting readers/writers), and the page
eviction thread discarding the page, including the tree's append list.
We can fix the race by moving the tree's append list discard code into
the eviction code so the tree's append list is discarded before we permit
readers/writers to proceed (bad because we don't want page discard code
in the eviction code and because readers/writers will wait longer than
they'd otherwise wait), or by moving the tree append list into the
page's modification information (bad because we're wasting 8 bytes in
every column-store page that is being modified and isn't the last page
in the tree).
This commit does the latter, mostly because it gets rid of the page's
"last page" flag and seems cleaner, plus, I suspect it's less likely
to be involved in future bugs.
|
|
|
|
threads doing LRU in each tree and wait for activity to drain when closing.
|
|
|
|
|
|
"utf16" strings that need to prefix the file name.
|
|
buffers and buffers used to write blocks.
--HG--
extra : rebase_source : 4849675711929de7d890fc312e713df5e442b1a6
|
|
--HG--
extra : rebase_source : c9ece039e84f16dcb4cf4fe8419e6de04f970a13
|
|
looks for the "force" configuration.
|
|
that does a full close/open pair instead of trying to fast-track it.
This will be slower, but reopens aren't common, and this avoids having
to worry about state held in the WT_BTREE structure across a verify or
salvage operation.
|
|
so there is only a single record per file.
|
|
supported.
|
|
|
|
|
|
refs #161
--HG--
extra : rebase_source : 19979afe98569f2348b730e93913b2b6362587a1
|
|
only, not a "search" operation. Part of #163.
|
|
underlying object was not found), map it to ENOENT, only cursor methods
return WT_NOTFOUND.
Fixes #163.
|
|
closes #161
--HG--
extra : rebase_source : d81a47356b3fe2441707cf82d2c3f81c27e62810
|
|
--HG--
extra : rebase_source : 0ab3eaa41269e81c4e1f0d952306c87f97fc1f3b
|
|
From the Open Source Initiative OSI web site:
Historical Background: The original license used on BSD Unix had four
clauses. The advertising clause (the third of four clauses) required
you to acknowledge use of U.C. Berkeley code in your advertising of any
product using that code. It was officially rescinded by the Director of
the Office of Technology Licensing of the University of California on
July 22nd, 1999. He states that clause 3 is "hereby deleted in its
entirety."
|
|
during complex object creation. Check that the number of named columns matches the key and value formats. Use the schema tracking code to cleanup after errors. Detach btree handles from tables when closing.
refs #131
|
|
simplifies the code.
|
|
|
|
configuration; copy API_CALL to API_CALL_TRET and change the WT_ERR
call to be WT_TRET. This means changing API_SESSION_INIT to always
set ret to 0 (WT_TRET requires ret already be set), and remove the
"err:" labels from all of the cursor close routines, nothing should
ever jump to err: in those routines.
closes #115
|
|
|
|
refs #153
|
|
|
|
|
|
support of truncate).
refs #149
|
|
WT_CURSOR::equals.
closes #153
|
|
|