v1.2.3
immudb 1.2.3
immudb v1.2.3
- Introduction of instrumentation panel via Prometheus for enhanced monitoring
- Tons of optimizations and simplified long-run maintenance functionality (self-compacting index)
- Run-time database loading/unloading
- Physical database deletion
Fixes:
- improved error handling when webconsole can't be started
- fix sorted set scans in descending order
- fix displayed name of signing key environment variable
- fixes for session handling
Improvements:
- much improved prometheus metrics related to internal btree
immudb_btree_cache_size
,immudb_btree_cache_hit
,immudb_btree_cache_miss
,immudb_btree_cache_evict
- for monitoring btree node cache usageimmudb_btree_depth
,immudb_btree_inner_node_entries
,immudb_btree_leaf_node_entries
for monitoring btree depth and internal data distributionimmudb_btree_flushed_nodes_last_cycle
,immudb_btree_flushed_nodes_total
,immudb_btree_flushed_entries_last_cycle
,immudb_btree_flushed_entries_total
,immudb_btree_compacted_nodes_last_cycle
,immudb_btree_compacted_nodes_total
,immudb_btree_compacted_entries_last_cycle
,immudb_btree_compacted_entries_total
- for monitoring flush and compaction progressimmudb_btree_nodes_data_begin
,immudb_btree_nodes_data_end
for monitoring new online compaction
- SQL syntax improvements (support for
<>
as an alternative to!=
) - Many btree improvements:
- faster btree insertions:
- reduction of insertion time by 22% in our test setup
- much better protection against unclean shutdowns (minimize the risk of full index rebuild)
- smaller IO pressure by reducing the number of sync operations
- more balanced distribution of entries in btree nodes
- reduced node sizes
- reduction of disk space occupied by index by 22% in our test setup
- online index compaction - https://docs.immudb.io/1.2.3/develop/management.html#index-cleaning
- faster btree insertions:
- Non-indexable entries
- More tests and log messages
- Many database options are now configurable through the GRPC api, list of options: https://docs.immudb.io/master/develop/management.html#configuration-options
- Improved database health check endpoint
- Compatibility mode with 1.1 proofs - https://docs.immudb.io/1.2.3/operations/backwards-compatibility.html
- Conditional KV writes - https://docs.immudb.io/1.2.3/develop/reading.html#conditional-writes
- On-demand database load / unload and deletion - https://docs.immudb.io/1.2.3/develop/management.html#database-loading-unloading
Important Notes:
Updating to this version will cause regeneration of the btree index. For large databases this may take some time.
Changelog
[v1.2.3] - 2022-04-14
Bug Fixes
- cmd/immuadmin: simplify logging when flushing and compacting current db
- pkg/database: return key not found when resolving a deleted entry
- pkg/database: Return correct error for verifiedGet on deleted entries
- CI/CD: Golang compiler is not needed for building docker images
- CI/CD: Use CAS for notarization
- embedded/store: Ensure up-to-date index on constrained writes
- embedded/store: Fix early precondition checks
- embedded/tbtree: copy-on-write when increasing root ts
- immudb: Fix the name of signing key env var
- pkg: Fix tests after recent changes in API
- pkg/api: Remove unused Sync field from IndexOptions
- pkg/api: typo in kv metadata message
- pkg/api/schema: Use correct id for preconditions in SetRequest
- pkg/auth: Avoid unguarded read from user tokens map
- pkg/client: Adopt to EncodeReference changes
- pkg/client: Prevent updates with incorrect database settings
- pkg/client: Use correct response for UpdateDatabaseV2
- pkg/client/errors: Ensure FromErrors works with ImmuError instance
- pkg/client/errors: Update the list of error codes
- pkg/database: Better handling of invalid constraints
- pkg/database: Improve test coverage for KV constraints
- pkg/database: automatically set max score if not specified in desc order
- pkg/errors: Correct GRPC error mapping for precondition failure
- pkg/server: Use buffered channel for catching OS signals
- pkg/server: adjust time to millis convertion
- pkg/server: ensure sessions locks get released
- pkg/server: override default settings with existent values
- pkg/server: typo in log message
- tools/monitoring: Update grafana dashboards
Changes
- Fix typo in a comment
- Rename Constraints to Preconditions
- cleanup percentage as float value
- Update copyright to 2022
- Dockerfile: Improve dockerfile builds
- build: improve release instructions (#1100)
- cmd/immuadmin: add safety flag in delete database command
- cmd/immuclient: health command description
- embedded/ahtree: fix error message
- embedded/appendable: appendable checksum calculation
- embedded/appendable: return io.EOF if there are not enough data for checksum calculation
- embedded/appendable: discard capability
- embedded/appendable: fix typo in error message
- embedded/store: syncThld at store options
- embedded/store: Add missing Copyright header
- embedded/store: declare constants for all the options
- embedded/store: parametrized index write buffer size
- embedded/store: add synced setting in index options
- embedded/store: sync aht when syncing the store
- embedded/store: verbose data corruption error
- embedded/store: index one tx per iteration
- embedded/store: use store layer for constraint validations
- embedded/store: constraint validations with deletion and expiration support
- embedded/store: do not skip expired entries when indexing
- embedded/store: verbose logging during compaction
- embedded/store: skip expired entries during indexing
- embedded/store: improve compaction logging
- embedded/store/options: Simplify validation tests
- embedded/tbree: only insert nodes in cache when they were mutated
- embedded/tbree: use shared writeOpts
- embedded/tbree: remove obsolete property
- embedded/tbree: bump index version
- embedded/tbtree: minOffset only for non-mutated nodes
- embedded/tbtree: Add metrics for index data size
- embedded/tbtree: reduce allocations when flushing
- embedded/tbtree: use double for min offset calculation
- embedded/tbtree: data discarding with opened and older snapshots
- embedded/tbtree: improve snapshot loading and discarding
- embedded/tbtree: synced flush if cleanup percentage is greater than zero
- embedded/tbtree: Add more internal metrics
- embedded/tbtree: reduce allocs during flush
- embedded/tbtree: ensure current snapshot is synced for compaction
- embedded/tbtree: validate input kv pairs before sorting
- embedded/tbtree: Use KV entries count for sync threshold
- embedded/tbtree: no cache update during compaction reads
- embedded/tbtree: discard unreferenced data when flushing index
- embedded/tbtree: discard unreferenced data
- embedded/tbtree: middle node split
- embedded/tbtree: min offset handling
- embedded/tbtree: validate compaction target path
- embedded/tbtree: positive compaction threshold
- embedded/tbtree: discard unreferenced data after sync
- embedded/tbtree: ensure sync on gracefully closing
- embedded/tbtree: checksum-based snapshot consistency validation
- embedded/tbtree: self-healing index
- embedded/tbtree: set initial offsets during initialization
- embedded/tbtree: validate data-format version
- embedded/tbtree: Extend buckets for child node count histogram
- embedded/tbtree: reduce fixed records length
- embedded/tbtree: open-ranged nodes
- embedded/tbtree: wip reduce node size
- embedded/tbtree: use binary search during key lookups
- embedded/tbtree: fully replace sync with syncThld
- embedded/tbtree: rebase non-indexed on kv syncthreshold
- embedded/tbtree: explicit error validation before loading
- embedded/tbtree: sort kv pairs in bulkInsert
- makefile: fix cas sign instructions
- metrics: Add better flush / compaction metrics for btree
- pkg/api: prepare flushindex endpoint for future extensions
- pkg/api: use entries spec in verified and scan tx endpoints
- pkg/api: parametrized index cleanup percentage
- pkg/api: non-indexable entries
- pkg/api: use nullable prefix in db settings message
- pkg/api: add synced param to flushindex endpoint
- pkg/api: change proto schema toward db loading/unloading
- pkg/api: uniform v2 endpoints
- pkg/api: db loading and unloading
- pkg/client: optional client connection
- pkg/client: synced flushing to enable physical data deletion
- pkg/client: use txRequest in TxByIDWithSpec method
- pkg/database: tx entries excluded by default if non-null spec is provided
- pkg/database: optional tx value resolution
- pkg/database: remove db name from options
- pkg/database: use shared tx holder when resolving tx entries
- pkg/database: parameters to resolve references at tx
- pkg/integration: integrate non-indexed into grpc apis
- pkg/server: Dump used db options when loading databases
- pkg/server: replication options for systemdb and defaultdb
- pkg/server: use syncThreshold
- pkg/server: use previous store default values
- pkg/server: endpoint to retrieve settings of selected database
- pkg/server: log web-console error on boot
- pkg/server: start/stop replicator when loading/unloading db
- pkg/server: expose max opened files for btree indexing
- pkg/server: minor changes
- pkg/server: synced db runtime operations
- pkg/server: expose flush index endpoint
- pkg/server: increase default max number of active snapshots
- pkg/server: tolerate failed user-created db loading
- pkg/server: convert time to milliseconds
- pkg/serverr: validate request in deprecated database creation endpoint
- stats: Add btree cache prometheus stats
Features
- Entries-independent constraints in GRPC api
- Improved API for database creation and update
- Move KV write constraints to OngoingTX member
- Improved validation of kv constraints
- KV: Add constrained KV writes for ExecAll operation
- KV: Do not create unnecessary snapshots when checking KV constraints
- KV: Move constraints validation to OngoingTx
- KV: Add constrained KV writes for Set operation
- KV: Add constrained KV writes for Reference operation
- embedded/cache: dynamic cache resizing
- embedded/store: Fail to write metadata if proof version does not support it
- embedded/store: Add max header version used during writes
- embedded/store: non-indexable entries
- embedded/store: Add tests for generation of entries with metadata
- embedded/store: Allow changing tx header value using GRPC api.
- embedded/tbtree: decouple flush and sync by introducing syncThreshold attribute
- immuadmin: Allow changing proof compatibility from immuadmin
- kv: Update grpc protocol with KV set constraints
- pkg/api: delete database endpoint
- pkg/api: tx api with entry filtering capabilities
- pkg/client: new method to fetch tx entries in a single call
- pkg/database: Updated GRPC protocol for constrained writes
- pkg/database: Update code for new constrained write protocol
- pkg/database: add noWait attribute in get request
- pkg/server: database health endpoint
- pkg/server: support database loading/unloading
- pkg/server: new endpoint databaseSettings
- pkg/server: expose all database settings
- tools/monitoring: Add immudb Grafana dashboard
- tools/monitoring: added datasource selection, added instance selection, labels include instance, fixed calculations
Downloads
Docker image
https://hub.docker.com/r/codenotary/immudb
Immudb Binaries
File | SHA256 |
---|---|
immudb-v1.2.3-darwin-amd64 | b03c106daca266bf0345206c3cb194f65392c2115c66c9d5c4d8bae2143bb2fc |
immudb-v1.2.3-darwin-arm64 | 3745fd81a81f03fce432e2ac8c05aeca8d24cbbba2d308ac557a70fff1b5dda2 |
immudb-v1.2.3-freebsd-amd64 | 76c1613cbbbed07b5ed5a336e4beb778a6f9bd430433789e6248c369b586f1b4 |
immudb-v1.2.3-linux-amd64 | 5fc041ec54292e344415a2db171986685da7880690c7758822fb30bca1189f2a |
immudb-v1.2.3-linux-amd64-static | ae71135cc0c4a32f84543ea75945c706ab7122f2d6a3172821aa70329cc85536 |
immudb-v1.2.3-linux-arm64 | bd89c884907802397e6ea70741e90eee023dea8830089b4e34daf0d4e3ded6a0 |
immudb-v1.2.3-linux-s390x | 5b09d162dfa59624f941275f6d45f4fd4928dde466a7486cba41a4aa7f5e3329 |
immudb-v1.2.3-windows-amd64.exe | 2218ce7450da509c0bd66429d1b0fb21f2f0949685ba93f71076c27d098d75c0 |
Immuclient Binaries
File | SHA256 |
---|---|
immuclient-v1.2.3-darwin-amd64 | 9a15647180557662f8f7ddcf9362729e43f66bc91e729992829be8bdbaafc1f5 |
immuclient-v1.2.3-darwin-arm64 | 0c7f315b7055bb2061c464375c703eccd132a76a50e227b74d86dc83fa5b1c57 |
immuclient-v1.2.3-freebsd-amd64 | 14ff94b79576feabd20f29e8eb6793176e9eb0740c34839ff49dabd2f16d729e |
immuclient-v1.2.3-linux-amd64 | d3a8f10ed09ef5a6fc4a1991175e4f2ddd14592de79a984a07bcab38c8708be9 |
immuclient-v1.2.3-linux-amd64-static | 537089659f460cc2fb4537f3567ae84a252d7787504b9edab3a0a8177841f67e |
immuclient-v1.2.3-linux-arm64 | 75dda0fb40459685dc4457b7522447bea45f3a46bf3e39c9e89a6169014fa36b |
immuclient-v1.2.3-linux-s390x | b9ff4e6c1350662b4376c35d0768f1276bd942a984e4a6decbd3024a48794a0a |
immuclient-v1.2.3-windows-amd64.exe | 6ddb1dc0c1985fb13c92cf6605de1c6c814271209cf789b35df44bb2cef85540 |
Immuadmin Binaries
File | SHA256 |
---|---|
immuadmin-v1.2.3-darwin-amd64 | 054a7d7d5d4725926606defdf86dcf1701132b76f30dd29091f2a10cd6311cea |
immuadmin-v1.2.3-darwin-arm64 | c21f81b1b443a846472b8df8d7092844f58ba112063ee7f35efe9509f5093863 |
immuadmin-v1.2.3-freebsd-amd64 | 7197ce5804a41ba6a51aa72684b381be37a0091ffb01efb2189cec335f2094b9 |
immuadmin-v1.2.3-linux-amd64 | b267a200992612c46b979421ec77374c261507a23a750030a1f46996090f132e |
immuadmin-v1.2.3-linux-amd64-static | ba4ef373a0fb9f440d087528f9af40836e800846b77848a3a6084964b4320f8b |
immuadmin-v1.2.3-linux-arm64 | 0234b5d0c48c850f6e577ade0ef75d2674781560a634cf2b757835a0c9435ac8 |
immuadmin-v1.2.3-linux-s390x | 7a9be9a67f4cd6ea9cbbf24bafdccbe8468bf12fce2a415aa39266cb7b228769 |
immuadmin-v1.2.3-windows-amd64.exe | 7c929698668891008f7fbc641ada790915de99df71719bcd5be1584c79bbdf5c |