| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|\
| |
| | |
add tx-copy-deprecated
|
|/ |
|
|\
| |
| | |
Remove unnecessary if in batch handling
|
|/
|
|
|
|
| |
This is safe, as the only place that creates call values always
explicitly sets err. It's a leftover from an earlier iteration of the
code.
|
| |
|
|\
| |
| | |
Add Ponzu CMS to list of projects using Bolt
|
|/ |
|
|\
| |
| | |
Revert "replace unix implementation to be the same as solaris to fix …"
|
|/
|
|
|
|
| |
issue with glusterfs"
This reverts commit ca9f2088aab4fc9832e587655f0026875bddbf9b.
|
|\
| |
| | |
hexidecimal -> hexadecimal
|
|/
|
| |
Small spelling fix :)
|
|\
| |
| | |
Ensure that keys generated by testing/quick are unique
|
|/
|
|
|
|
|
|
| |
Quick seed 21691 used to generate duplicate keys,
which caused some Puts of values to overwrite other values,
causing spurious test failures.
Fixes #629.
|
|
|
|
|
|
| |
The new FCTNL locking does not support multiple locks from the
same process which makes those tests fail. The lock tests have
been removed.
|
|\
| |
| | |
Fix return statement inside else block at the end of function
|
| |
| |
| |
| |
| |
| | |
windows file
Signed-off-by: nick <nicholasjamesrusso@gmail.com>
|
|\ \
| | |
| | | |
replace unix implementation to be the same as solaris to fix an issue with glusterfs
|
| | |
| | |
| | |
| | | |
glusterfs
|
|\ \ \
| | | |
| | | | |
Fix prefix scan example
|
| | | |
| | | |
| | | | |
The example is correct in isolation, but if people just copy the loop, it will go into infinite loop when given an empty byte slice.
|
|\ \ \ \
| | | | |
| | | | | |
Minor cleanup and bug fixes
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The existing append-based implementation left a hanging reference to
the last tx.
For example, if db.txs was:
[]*Tx{0x1, 0x2, 0x3, 0x4, 0x5}
and we removed the second element, db.txs would now be:
[]*Tx{0x1, 0x3, 0x4, 0x5, 0x5}[:4]
The garbage collector cannot reclaim anything anywhere in a slice,
even pointers between its len and cap, because the len can always
be extended up to the cap.
This hanging reference to the Tx could last indefinitely,
and since the Tx has a reference to user-provided functions,
which could be closures, this bug could prevent arbitrary
amounts of user garbage from being collected.
Since db.txs is unordered anyway, switch to a simpler--and O(1) instead
of O(n)--implementation. Swap the last element into the spot to be
deleted, nil out the original last element, and shrink the slice.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
freelist.size did not account for the extra
fake freelist item used to hold the number of
elements when the freelist is large.
|
| | | | |
| | | | |
| | | | |
| | | | | |
This recovers the slight alloc regression in #636.
|
|/ / / /
| | | |
| | | |
| | | |
| | | | |
freelist.lenall duplicated freelist.count.
freelist.copyall and mergepgids docs had typos.
|
|\ \ \ \
| | | | |
| | | | | |
Don't allocate huge slices to merge pgids in freelist.write
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Using a large (50gb) database with a read-write-delete heavy load,
nearly 100% of allocated space came from freelists.
1/3 came from freelist.release, 1/3 from freelist.write,
and 1/3 came from tx.allocate to make space for freelist.write.
In the case of freelist.write, the newly allocated giant slice gets
copied to the space prepared by tx.allocate and then discarded.
To avoid this, add func mergepgids that accepts a destination slice,
and use it in freelist.write.
This has a mild negative impact on the existing benchmarks,
but cuts allocated space in my real world db by over 30%.
name old time/op new time/op delta
_FreelistRelease10K-8 18.7µs ±10% 18.2µs ± 4% ~ (p=0.548 n=5+5)
_FreelistRelease100K-8 233µs ± 5% 258µs ±20% ~ (p=0.151 n=5+5)
_FreelistRelease1000K-8 3.34ms ± 8% 3.13ms ± 8% ~ (p=0.151 n=5+5)
_FreelistRelease10000K-8 32.3ms ± 1% 32.2ms ± 7% ~ (p=0.690 n=5+5)
DBBatchAutomatic-8 2.18ms ± 3% 2.19ms ± 4% ~ (p=0.421 n=5+5)
DBBatchSingle-8 140ms ± 6% 140ms ± 4% ~ (p=0.841 n=5+5)
DBBatchManual10x100-8 4.41ms ± 2% 4.37ms ± 3% ~ (p=0.548 n=5+5)
name old alloc/op new alloc/op delta
_FreelistRelease10K-8 82.5kB ± 0% 82.5kB ± 0% ~ (all samples are equal)
_FreelistRelease100K-8 805kB ± 0% 805kB ± 0% ~ (all samples are equal)
_FreelistRelease1000K-8 8.05MB ± 0% 8.05MB ± 0% ~ (all samples are equal)
_FreelistRelease10000K-8 80.4MB ± 0% 80.4MB ± 0% ~ (p=1.000 n=5+5)
DBBatchAutomatic-8 384kB ± 0% 384kB ± 0% ~ (p=0.095 n=5+5)
DBBatchSingle-8 17.2MB ± 1% 17.2MB ± 1% ~ (p=0.310 n=5+5)
DBBatchManual10x100-8 908kB ± 0% 902kB ± 1% ~ (p=0.730 n=4+5)
name old allocs/op new allocs/op delta
_FreelistRelease10K-8 5.00 ± 0% 5.00 ± 0% ~ (all samples are equal)
_FreelistRelease100K-8 5.00 ± 0% 5.00 ± 0% ~ (all samples are equal)
_FreelistRelease1000K-8 5.00 ± 0% 5.00 ± 0% ~ (all samples are equal)
_FreelistRelease10000K-8 5.00 ± 0% 5.00 ± 0% ~ (all samples are equal)
DBBatchAutomatic-8 10.2k ± 0% 10.2k ± 0% +0.07% (p=0.032 n=5+5)
DBBatchSingle-8 58.6k ± 0% 59.6k ± 0% +1.70% (p=0.008 n=5+5)
DBBatchManual10x100-8 6.02k ± 0% 6.03k ± 0% +0.17% (p=0.029 n=4+4)
|
|\ \ \ \
| | | | |
| | | | | |
Document multi-process limitation in README
|
|/ / / /
| | | |
| | | | |
Add limitation about multiple processes opening databases concurrently.
|
|\ \ \ \
| |/ / /
|/| | | |
[ppc64] added missing variable
|
| | |/
| |/|
| | | |
The variable `brokenUnaligned` was missing for ppc64.
|
|\ \ \
| |_|/
|/| | |
Added BoltHold and Ironsmith to the projects list
|
|/ / |
|
|\ \
| |/
|/| |
Add btcwallet and dcrwallet to projects using bolt.
|
| | |
|
|/ |
|
|\
| |
| | |
enhc: update example for nested buckets
|
| | |
|
|\ \
| |/
|/| |
Add 'bolter' to the list of projects that use Bolt
|
|/
|
| |
[bolter](https://github.com/hasit/bolter) is a command-line app for viewing BoltDB file in your terminal using [tablewriter](https://github.com/olekukonko/tablewriter).
|
|\
| |
| | |
fix typo in README.md
|
|/ |
|
|\
| |
| | |
Add gopherpit to projects that use Bolt
|
|/ |
|
|\
| |
| | |
Fix Stats.Sub() for Stats.TxN.
|
|/
|
|
|
|
| |
The subtraction for `TxN` was previously transposed which caused
the result to be a negative number. This change alters the order
to return the correct (positive) result.
|
|\
| |
| | |
Update README.md
|
|/
|
|
|
| |
Add warning to README.md that keys and values in `ForEach()` are
invalid outside of transaction.
|
|\
| |
| | |
Update README.md
|