immudb v1.2.3-RC1 Release Notes

Release Date: 2022-04-13 // about 2 years ago
  • ๐Ÿ› Bug Fixes

    • 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