270 lines
10 KiB
Markdown
270 lines
10 KiB
Markdown
# Changelog
|
|
All notable changes to this project will be documented in this file.
|
|
|
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
|
and this project adheres to [Serialization Versioning](VERSIONING.md).
|
|
|
|
## [Unreleased]
|
|
|
|
## [1.6.2] - 2020-09-10
|
|
|
|
### Fixed
|
|
- Fix Sequence generates duplicate values (#1281)
|
|
- Ensure `bitValuePointer` flag is cleared for LSM entry values written to LSM (#1313)
|
|
- Confirm `badgerMove` entry required before rewrite (#1302)
|
|
- Drop move keys when its key prefix is dropped (#1331)
|
|
- Compaction: Expired keys and delete markers are never purged (#1354)
|
|
- Restore: Account for value size as well (#1358)
|
|
- GC: Consider size of value while rewriting (#1357)
|
|
- Rework DB.DropPrefix (#1381)
|
|
- Update head while replaying value log (#1372)
|
|
- Remove vlog file if bootstrap, syncDir or mmap fails (#1434)
|
|
- Levels: Compaction incorrectly drops some delete markers (#1422)
|
|
- Fix(replay) - Update head for LSM entries also (#1456)
|
|
- Fix(Backup/Restore): Keep all versions (#1462)
|
|
- Fix build on Plan 9 (#1451)
|
|
|
|
## [1.6.1] - 2020-03-26
|
|
|
|
### New APIs
|
|
- Badger.DB
|
|
- NewWriteBatchAt (#948)
|
|
- Badger.Options
|
|
- WithEventLogging (#1035)
|
|
- WithVerifyValueChecksum (#1052)
|
|
- WithBypassLockGuard (#1243)
|
|
|
|
### Features
|
|
- Support checksum verification for values read from vlog (#1052)
|
|
- Add EventLogging option (#1035)
|
|
- Support WriteBatch API in managed mode (#948)
|
|
- Add support for watching nil prefix in Subscribe API (#1246)
|
|
|
|
### Fixed
|
|
- Initialize vlog before starting compactions in db.Open (#1226)
|
|
- Fix int overflow for 32bit (#1216)
|
|
- Remove the 'this entry should've caught' log from value.go (#1170)
|
|
- Fix merge iterator duplicates issue (#1157)
|
|
- Fix segmentation fault in vlog.Read (header.Decode) (#1150)
|
|
- Fix VerifyValueChecksum checks (#1138)
|
|
- Fix windows dataloss issue (#1134)
|
|
- Fix request increment ref bug (#1121)
|
|
- Limit manifest's change set size (#1119)
|
|
- Fix deadlock in discard stats (#1070)
|
|
- Acquire lock before unmapping vlog files (#1050)
|
|
- Set move key's expiresAt for keys with TTL (#1006)
|
|
- Fix deadlock when flushing discard stats. (#976)
|
|
- Fix table.Smallest/Biggest and iterator Prefix bug (#997)
|
|
- Fix boundaries on GC batch size (#987)
|
|
- Lock log file before munmap (#949)
|
|
- VlogSize to store correct directory name to expvar.Map (#956)
|
|
- Fix transaction too big issue in restore (#957)
|
|
- Fix race condition in updateDiscardStats (#973)
|
|
- Cast results of len to uint32 to fix compilation in i386 arch. (#961)
|
|
- Drop discard stats if we can't unmarshal it (#936)
|
|
- Open all vlog files in RDWR mode (#923)
|
|
- Fix race condition in flushDiscardStats function (#921)
|
|
- Ensure rewrite in vlog is within transactional limits (#911)
|
|
- Fix prefix bug in key iterator and allow all versions (#950)
|
|
- Fix discard stats moved by GC bug (#929)
|
|
|
|
### Performance
|
|
- Use fastRand instead of locked-rand in skiplist (#1173)
|
|
- Fix checkOverlap in compaction (#1166)
|
|
- Optimize createTable in stream_writer.go (#1132)
|
|
- Add capacity to slice creation when capacity is known (#1103)
|
|
- Introduce fast merge iterator (#1080)
|
|
- Introduce StreamDone in Stream Writer (#1061)
|
|
- Flush vlog buffer if it grows beyond threshold (#1067)
|
|
- Binary search based table picker (#983)
|
|
- Making the stream writer APIs goroutine-safe (#959)
|
|
- Replace FarmHash with AESHash for Oracle conflicts (#952)
|
|
- Change file picking strategy in compaction (#894)
|
|
- Use trie for prefix matching (#851)
|
|
- Fix busy-wait loop in Watermark (#920)
|
|
|
|
|
|
## [1.6.0] - 2019-07-01
|
|
|
|
This is a release including almost 200 commits, so expect many changes - some of them
|
|
not backward compatible.
|
|
|
|
Regarding backward compatibility in Badger versions, you might be interested on reading
|
|
[VERSIONING.md](VERSIONING.md).
|
|
|
|
_Note_: The hashes in parentheses correspond to the commits that impacted the given feature.
|
|
|
|
### New APIs
|
|
|
|
- badger.DB
|
|
- DropPrefix (291295e)
|
|
- Flatten (7e41bba)
|
|
- KeySplits (4751ef1)
|
|
- MaxBatchCount (b65e2a3)
|
|
- MaxBatchSize (b65e2a3)
|
|
- PrintKeyValueHistogram (fd59907)
|
|
- Subscribe (26128a7)
|
|
- Sync (851e462)
|
|
|
|
- badger.DefaultOptions() and badger.LSMOnlyOptions() (91ce687)
|
|
- badger.Options.WithX methods
|
|
|
|
- badger.Entry (e9447c9)
|
|
- NewEntry
|
|
- WithMeta
|
|
- WithDiscard
|
|
- WithTTL
|
|
|
|
- badger.Item
|
|
- KeySize (fd59907)
|
|
- ValueSize (5242a99)
|
|
|
|
- badger.IteratorOptions
|
|
- PickTable (7d46029, 49a49e3)
|
|
- Prefix (7d46029)
|
|
|
|
- badger.Logger (fbb2778)
|
|
|
|
- badger.Options
|
|
- CompactL0OnClose (7e41bba)
|
|
- Logger (3f66663)
|
|
- LogRotatesToFlush (2237832)
|
|
|
|
- badger.Stream (14cbd89, 3258067)
|
|
- badger.StreamWriter (7116e16)
|
|
- badger.TableInfo.KeyCount (fd59907)
|
|
- badger.TableManifest (2017987)
|
|
- badger.Tx.NewKeyIterator (49a49e3)
|
|
- badger.WriteBatch (6daccf9, 7e78e80)
|
|
|
|
### Modified APIs
|
|
|
|
#### Breaking changes:
|
|
|
|
- badger.DefaultOptions and badger.LSMOnlyOptions are now functions rather than variables (91ce687)
|
|
- badger.Item.Value now receives a function that returns an error (439fd46)
|
|
- badger.Txn.Commit doesn't receive any params now (6daccf9)
|
|
- badger.DB.Tables now receives a boolean (76b5341)
|
|
|
|
#### Not breaking changes:
|
|
|
|
- badger.LSMOptions changed values (799c33f)
|
|
- badger.DB.NewIterator now allows multiple iterators per RO txn (41d9656)
|
|
- badger.Options.TableLoadingMode's new default is options.MemoryMap (6b97bac)
|
|
|
|
### Removed APIs
|
|
|
|
- badger.ManagedDB (d22c0e8)
|
|
- badger.Options.DoNotCompact (7e41bba)
|
|
- badger.Txn.SetWithX (e9447c9)
|
|
|
|
### Tools:
|
|
|
|
- badger bank disect (13db058)
|
|
- badger bank test (13db058) --mmap (03870e3)
|
|
- badger fill (7e41bba)
|
|
- badger flatten (7e41bba)
|
|
- badger info --histogram (fd59907) --history --lookup --show-keys --show-meta --with-prefix (09e9b63) --show-internal (fb2eed9)
|
|
- badger benchmark read (239041e)
|
|
- badger benchmark write (6d3b67d)
|
|
|
|
## [1.5.5] - 2019-06-20
|
|
|
|
* Introduce support for Go Modules
|
|
|
|
## [1.5.3] - 2018-07-11
|
|
Bug Fixes:
|
|
* Fix a panic caused due to item.vptr not copying over vs.Value, when looking
|
|
for a move key.
|
|
|
|
## [1.5.2] - 2018-06-19
|
|
Bug Fixes:
|
|
* Fix the way move key gets generated.
|
|
* If a transaction has unclosed, or multiple iterators running simultaneously,
|
|
throw a panic. Every iterator must be properly closed. At any point in time,
|
|
only one iterator per transaction can be running. This is to avoid bugs in a
|
|
transaction data structure which is thread unsafe.
|
|
|
|
* *Warning: This change might cause panics in user code. Fix is to properly
|
|
close your iterators, and only have one running at a time per transaction.*
|
|
|
|
## [1.5.1] - 2018-06-04
|
|
Bug Fixes:
|
|
* Fix for infinite yieldItemValue recursion. #503
|
|
* Fix recursive addition of `badgerMove` prefix. https://github.com/dgraph-io/badger/commit/2e3a32f0ccac3066fb4206b28deb39c210c5266f
|
|
* Use file size based window size for sampling, instead of fixing it to 10MB. #501
|
|
|
|
Cleanup:
|
|
* Clarify comments and documentation.
|
|
* Move badger tool one directory level up.
|
|
|
|
## [1.5.0] - 2018-05-08
|
|
* Introduce `NumVersionsToKeep` option. This option is used to discard many
|
|
versions of the same key, which saves space.
|
|
* Add a new `SetWithDiscard` method, which would indicate that all the older
|
|
versions of the key are now invalid. Those versions would be discarded during
|
|
compactions.
|
|
* Value log GC moves are now bound to another keyspace to ensure latest versions
|
|
of data are always at the top in LSM tree.
|
|
* Introduce `ValueLogMaxEntries` to restrict the number of key-value pairs per
|
|
value log file. This helps bound the time it takes to garbage collect one
|
|
file.
|
|
|
|
## [1.4.0] - 2018-05-04
|
|
* Make mmap-ing of value log optional.
|
|
* Run GC multiple times, based on recorded discard statistics.
|
|
* Add MergeOperator.
|
|
* Force compact L0 on clsoe (#439).
|
|
* Add truncate option to warn about data loss (#452).
|
|
* Discard key versions during compaction (#464).
|
|
* Introduce new `LSMOnlyOptions`, to make Badger act like a typical LSM based DB.
|
|
|
|
Bug fix:
|
|
* (Temporary) Check max version across all tables in Get (removed in next
|
|
release).
|
|
* Update commit and read ts while loading from backup.
|
|
* Ensure all transaction entries are part of the same value log file.
|
|
* On commit, run unlock callbacks before doing writes (#413).
|
|
* Wait for goroutines to finish before closing iterators (#421).
|
|
|
|
## [1.3.0] - 2017-12-12
|
|
* Add `DB.NextSequence()` method to generate monotonically increasing integer
|
|
sequences.
|
|
* Add `DB.Size()` method to return the size of LSM and value log files.
|
|
* Tweaked mmap code to make Windows 32-bit builds work.
|
|
* Tweaked build tags on some files to make iOS builds work.
|
|
* Fix `DB.PurgeOlderVersions()` to not violate some constraints.
|
|
|
|
## [1.2.0] - 2017-11-30
|
|
* Expose a `Txn.SetEntry()` method to allow setting the key-value pair
|
|
and all the metadata at the same time.
|
|
|
|
## [1.1.1] - 2017-11-28
|
|
* Fix bug where txn.Get was returing key deleted in same transaction.
|
|
* Fix race condition while decrementing reference in oracle.
|
|
* Update doneCommit in the callback for CommitAsync.
|
|
* Iterator see writes of current txn.
|
|
|
|
## [1.1.0] - 2017-11-13
|
|
* Create Badger directory if it does not exist when `badger.Open` is called.
|
|
* Added `Item.ValueCopy()` to avoid deadlocks in long-running iterations
|
|
* Fixed 64-bit alignment issues to make Badger run on Arm v7
|
|
|
|
## [1.0.1] - 2017-11-06
|
|
* Fix an uint16 overflow when resizing key slice
|
|
|
|
[Unreleased]: https://github.com/dgraph-io/badger/compare/v1.6.2...HEAD
|
|
[1.6.2]: https://github.com/dgraph-io/badger/compare/v1.6.1...v1.6.2
|
|
[1.6.1]: https://github.com/dgraph-io/badger/compare/v1.6.0...v1.6.1
|
|
[1.6.0]: https://github.com/dgraph-io/badger/compare/v1.5.5...v1.6.0
|
|
[1.5.5]: https://github.com/dgraph-io/badger/compare/v1.5.3...v1.5.5
|
|
[1.5.3]: https://github.com/dgraph-io/badger/compare/v1.5.2...v1.5.3
|
|
[1.5.2]: https://github.com/dgraph-io/badger/compare/v1.5.1...v1.5.2
|
|
[1.5.1]: https://github.com/dgraph-io/badger/compare/v1.5.0...v1.5.1
|
|
[1.5.0]: https://github.com/dgraph-io/badger/compare/v1.4.0...v1.5.0
|
|
[1.4.0]: https://github.com/dgraph-io/badger/compare/v1.3.0...v1.4.0
|
|
[1.3.0]: https://github.com/dgraph-io/badger/compare/v1.2.0...v1.3.0
|
|
[1.2.0]: https://github.com/dgraph-io/badger/compare/v1.1.1...v1.2.0
|
|
[1.1.1]: https://github.com/dgraph-io/badger/compare/v1.1.0...v1.1.1
|
|
[1.1.0]: https://github.com/dgraph-io/badger/compare/v1.0.1...v1.1.0
|
|
[1.0.1]: https://github.com/dgraph-io/badger/compare/v1.0.0...v1.0.1
|