immudb v2.2 Release Notes

Release Date: 2021-04-23 // 6 months ago
  • ๐Ÿ› Bug Fixes

    • โšก๏ธ update Discord invite link
    • readme typo and mascot placement (#693)
    • embedded/store: ensure done message is received
    • pkg/client: delete token file on logout only if the file exists

    ๐Ÿ”„ Changes

    • โž• Add roadmap
    • โž• Add benchmark to README (based on 0.9.x) (#706)
    • โœ‚ remove grpc term from token expiration description
    • embedded/store: check latest indexed tx is not greater than latest committed one
    • embedded/store: defer lock releasing
    • pkg/database: use newly exposed KeyReaderSpec

    ๐Ÿ”‹ Features

    • โž• add token expiration time flag
    • embedded/store: readAsBefore and reset reader
    • pkg/sql: readAsBefore operation

Previous changes from v0.9.2

  • ๐Ÿ› Bug Fixes

    • ๐Ÿ›  fix StreamVerifiedSet and Get and add an (integration) test for them
    • ๐Ÿ›  fix inclusion proofs in StreamVerifiedSet and Get
    • password reader 'inappropriate ioctl for device' from stdin (#658)
    • include AtTx in StreamZScan response
    • embedded: fix data races
    • embedded: use mutex to sync ops at tx lru-cache
    • embedded/store: sync ReadTx operation
    • embedded/store: fix indexing sync and error retrieval
    • embedded/store: ensure waitees get notified when store is restarted
    • embedded/store: remove checking for closed store when fetching any vlog
    • embedded/store: continue indexing once index is replaced with compacted index
    • embedded/store: set delay with duration in ms
    • embedded/store: ensure watchers get notified when indexing is up-to-date
    • embedded/tbtree: release lock when compaction thld was not reached
    • embedded/tbtree: insertion delay while compacting not affecting compaction
    • embedded/tbtree: set lastSnapshot once flushed is completed
    • pkg/auth: add missing stream write methods to permissions
    • pkg/client: fix minor leftover
    • pkg/client: fix security issue: if client local state became corrupted an error is returned
    • pkg/client: ensure dual proof verification is made when there is a previously verified state
    • pkg/database: wrap seekKey with prefix only when seekKey is non-empty
    • pkg/server: use latest snapshot when listing users

    ๐Ÿ”„ Changes

    • โž• add max tx values length guard and remove code duplication
    • ๐Ÿ“ฆ move stream service to a proper package
    • ๐Ÿ‘Œ improve serverside stream error handling
    • โž• add video streamer command
    • renaming stream methods
    • โšก๏ธ updating copyright
    • renaming stream methods, add stubs and stream service factory
    • ๐Ÿ›  fix binary notation
    • ๐Ÿ›  in server store creation max value entry is fixed to 32Mb
    • ๐Ÿคก mocked server uses the inner immudb grpc server and can be gracefully stopped
    • ๐Ÿ‘ set stream supports multiple key values
    • ๐Ÿ›  fixed minimum chunk size at 4096 bytes
    • โ™ป๏ธ refactor code quality issues
    • increase stream coverage and add a guard if key is present on a stream but no value is found
    • โœ‚ remove fake proveSinceTxBs key send in streamVerifiableSet
    • ๐Ÿ’… polish streams methods and add comments
    • embedded: remove unused cbuffer package
    • embedded: add logger
    • embedded: fix some typos with comments
    • embedded: log indexing notifications
    • embedded: descriptive logs on indexing and already closed errors
    • embedded: add logs into relevant operations
    • embedded: compaction and snapshot handling
    • embedded/appendable: thread-safe multi-appendable
    • embedded/appendable: sync before copying appendable content
    • embedded/appendable: multi-appendable fine-grained locking
    • embedded/store: remove duplicated logging
    • embedded/store: stop indexing while commiting with callback
    • embedded/store: leverage fine-grained locking when reading tx data
    • embedded/store: general improvements on snapshot management
    • embedded/store: log number of transactions yet to be indexed
    • embedded/store: use buffered channel instead of a circular buffer
    • embedded/store: set a limit on indexing iteration
    • embedded/store: set max file size to 2Gb (#649)
    • embedded/store: remove conditional locking before dumping index
    • embedded/store: lock-less readTx
    • embedded/tbtree: terminate reader if prefix won't match any more
    • embedded/tbtree: optimize seek position
    • embedded/tbtree: revert seek key setting
    • embedded/tbtree: sync key-history log during compaction
    • embedded/tbtree: sync before dumping
    • embedded/tbtree: optimize seek position
    • embedded/watchers: broadcasting optimisation
    • embedded/watchers: minor renaming
    • embedded/watchers: accept non-continuous notification
    • pkg/client: add a guard to check for min chunk size
    • pkg/client: add stream service factory on client and increase stream coverage
    • pkg/client: maps server error on client package
    • pkg/client: remove local files tests
    • pkg/client: add GetKeyValuesFromFiles helper method
    • pkg/client: integration test is skipped if immudb server is not present
    • pkg/database: return error while waiting for index to be up to date
    • pkg/database: use in-mem current snapshot in execAll operation
    • pkg/database: leverage lightweight waiting features of embedded store
    • pkg/database: return error while waiting for index to be up to date
    • pkg/database: ensure scan runs over fully up-to-date snapshot
    • pkg/database: illegal state guard is added to verifiable get and getTx methods
    • pkg/server: max recv msg size is set to 32M
    • pkg/server: add a guard to check for min chunk size
    • pkg/server: revert quit chan exposure
    • pkg/server: add server error mapper interceptor
    • pkg/server: add small delay for indexing to be completed
    • pkg/server: exposes Quit chan
    • pkg/stream: remove bufio.reader when not needed
    • pkg/stream: remove duplicated code
    • pkg/stream: add ErrNotEnoughDataOnStream error and ImmuServiceReceiver_StreamMock
    • pkg/stream: renamed stream test package
    • pkg/stream: add a guard to detect ErrNotEnoughDataOnStream on client side
    • pkg/stream: remove bufio and add ventryreceiver unit test
    • pkg/stream: add some comments to mesasge receiver
    • pkg/stream: add more corner cases guards
    • โœ… pkg/stream/streamtest: add dummy file generator
    • tools: fix copyright
    • tools/stream: get stream content directly from immudb
    • tools/stream/benchmark: add stream benchmark command
    • tools/stream/benchmark/streamb: add SinceTx value to getStream

    โ™ป๏ธ Code Refactoring

    • stream kvreceiver expose Next method to iterate over key values
    • stream receiver implements reader interface
    • ๐Ÿ‘‰ use of explicit messages for stream request
    • pkg/stream: use ParseValue func in zreceiver and remove the redundant readSmallMsg func
    • pkg/stream: refactor receiver to increase simplicity

    ๐Ÿ”‹ Features

    • โž• add flusher to stream data to client
    • โž• add Stream Scan and client stream ServiceFactory
    • โž• Add StreamVerifiedSet and StreamVerifiedGet
    • โž• add client->server stream handler
    • 0๏ธโƒฃ increase default store max value length to 32MB
    • โ™ป๏ธ refactors and implement server->client stream handler
    • โœ‚ Remove unnecessary dependencies (#665)
    • โž• add support for user, password and database flags in immuclient (#659)
    • chunk size is passed as argument in client and server
    • embedded/store: expose insertion delay while compacting
    • embedded/store: configurable compaction threshold to set the min number of snapshots for a compaction to be done
    • embedded/store: integrate watchers to support indexing synchronicity
    • embedded/store: tx header cache to speed up indexing
    • embedded/tbtree: configurable insertion delay while compaction is in progress
    • embedded/tbtree: automatically set seekKey based on prefixKey when it's not set
    • embedded/watchers: lightweight watching center
    • embedded/watchers: fetchable current state
    • pkg/client: handle illegal state error
    • pkg/database: non-blocking, no history compaction
    • pkg/database: non-blocking index compaction
    • pkg/database: default scan parameters using up-to-date snapshot
    • pkg/server: add signature on stream verifiable methods and tests
    • pkg/stream: add exec all stream