| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
when accessing the node data we used to use cast to
*[maxAllocSize]byte, which breaks if we try to go across maxAllocSize boundary.
This leads to occasional panics.
Sample stacktrace:
```
panic: runtime error: slice bounds out of range
goroutine 1 [running]:
github.com/boltdb/bolt.(*node).write(0xc208010f50, 0xc27452a000)
$GOPATH/src/github.com/boltdb/bolt/node.go:228 +0x5a5
github.com/boltdb/bolt.(*node).spill(0xc208010f50, 0x0, 0x0)
$GOPATH/src/github.com/boltdb/bolt/node.go:364 +0x506
github.com/boltdb/bolt.(*node).spill(0xc208010700, 0x0, 0x0)
$GOPATH/src/github.com/boltdb/bolt/node.go:336 +0x12d
github.com/boltdb/bolt.(*node).spill(0xc208010620, 0x0, 0x0)
$GOPATH/src/github.com/boltdb/bolt/node.go:336 +0x12d
github.com/boltdb/bolt.(*Bucket).spill(0xc22b6ae880, 0x0, 0x0)
$GOPATH/src/github.com/boltdb/bolt/bucket.go:535 +0x1c4
github.com/boltdb/bolt.(*Bucket).spill(0xc22b6ae840, 0x0, 0x0)
$GOPATH/src/github.com/boltdb/bolt/bucket.go:502 +0xac2
github.com/boltdb/bolt.(*Bucket).spill(0xc22f4e2018, 0x0, 0x0)
$GOPATH/src/github.com/boltdb/bolt/bucket.go:502 +0xac2
github.com/boltdb/bolt.(*Tx).Commit(0xc22f4e2000, 0x0, 0x0)
$GOPATH/src/github.com/boltdb/bolt/tx.go:150 +0x1ee
github.com/boltdb/bolt.(*DB).Update(0xc2080e4000, 0xc24d077508, 0x0, 0x0)
$GOPATH/src/github.com/boltdb/bolt/db.go:483 +0x169
```
It usually happens when working with large (50M/100M) values.
One way to reproduce it is to change maxAllocSize in bolt_amd64.go to 70000 and run the tests.
TestBucket_Put_Large crashes.
|
|\ \ \
| | |/
| |/| |
Add DB.Sync()
|
|/ /
| |
| |
| | |
This commit adds DB.Sync() for users who set DB.NoSync to true.
|
| | |
|
|\ \
| | |
| | | |
Add DB.NoTruncate flag.
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This commit adds the DB.NoGrowSync flag to optionally revert mmap()
calls to how they were implemented before the ext3/ext4 fix. When
NoGrowSync is true, remapping the data file will not force the file
system to resize it immediately. This works for non-ext3/4 file
systems.
The default value of NoGrowSync is false so it is still safe for
ext3/ext4 file systems by default.
See also: https://github.com/boltdb/bolt/issues/284
|
|\ \
| | |
| | | |
cmd/bolt: remove duplicate blockProfile flag
|
| | | |
|
|\ \ \
| |/ /
|/| | |
Added Freehold to the projects list in README + Transaction Documentation change
|
|/ /
| |
| |
| |
| |
| | |
Added a few lines of documentation to clarify that read-only
transactions need to be rolled back and not committed, as per the
discussion in issue #344
|
|\ \
| |/
|/| |
Refactor CLI
|
| | |
|
| | |
|
| | |
|
|/ |
|
| |
|
|\
| |
| | |
Added InfluxDB to list of projects using bolt
|
|/ |
|
|\
| |
| | |
Adding used by Seaweed File System
|
| | |
|
|/ |
|
|\
| |
| | |
Update README.md: fixed type mismatch
|
|/ |
|
|\
| |
| | |
README
|
| | |
|
|/
|
| |
Document use of free pages and page reclamation works.
|
|\
| |
| | |
fix doc bug and add comment for db.dataref
|
| | |
|
| | |
|
|\ \
| | |
| | | |
Document key/value safety.
|
|/ /
| |
| |
| |
| |
| | |
This commit adds safety documentation to the data accessor functions
in Bolt as well as the README. This was documented once in the package
level godoc but it's important enough that it should be more clear.
|
|\ \
| |/
|/| |
Implement io.WriterTo interface on Tx.
|
| |
| |
| |
| |
| |
| |
| |
| | |
This commit moves the functionality in Tx.Copy() to Tx.WriteTo(). This
allows Tx to be used as an io.WriterTo which makes it easier to mock.
The Tx.Copy() function still exists but it's simply a wrapper around
Tx.WriteTo().
|
|\ \
| |/
|/| |
Add transaction batching
|
| |
| |
| |
| |
| |
| | |
DB.Batch makes it easy to make lots of small transactions with
significantly better performance. Batch combines multiple concurrent
Update calls into a single disk transaction, managing errors smartly.
|
|\ \
| | |
| | | |
link to Bolt article
|
|/ / |
|
|\ \
| | |
| | | |
new line after page size info print
|
| | | |
|
|\ \ \
| |/ /
|/| | |
Added max alloc size to arm.
|
|/ / |
|
|\ \
| | |
| | | |
Update max alloc size on 386 arch
|
|/ / |
|
|\ \
| | |
| | | |
Increase max array pointer size to 2GB.
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This commit changes the maxAllocSize from 256GB to 2GB to handle large
values. It was previously 0xFFFFFFF and I tried adding one more "F" but
it caused an "array too large" error. I played around with the value
some more and found that 0x7FFFFFFF (2GB) is the highest allowed value.
This does not affect how the data is stored. It is simply used for type
converting pointers to array pointers in order to utilize zero copy
from the mmap.
|
|\ \
| |/
|/| |
Fixed missing parenthesis on the readme
|
|/ |
|
|\
| |
| | |
added gocode.io to list of projects using bolt
|
|/ |
|
|\
| |
| | |
Fix large mmap resize
|