Releases: codenotary/immudb
v1.9.0-RC1
Release notes
Introducing immudb 1.9.0, a new release with several new features, which we are very excited about!
Swagger UI
Document Data Model can be accessed through a Swagger UI. Providing the API to interact with the document data-model API in a simple and intuitive way.
UUID datatype
Both the SQL data model as well as the Document data model now support this useful datatype. (#1796)
Historical SQL queries
Row history can be queried using SQL. (#1804)
Improved Document Audit endpoint
The Document Audit endpoint now displays the timestamp and the username associated with each change made to a document during revisions..
Furthermore, it is also possible to audit revisions of documents without retrieving the actual documents themselves (omitPayloads
parameter)
Index Management
Prior to this release, index creation at the SQL and Document Data Model levels was only possible at the point of initialization, i.e. when a table or collection was empty. Since this release, this limitation has been overcome and non-unique indexes can now be created at any time, and they can also be physically deleted at any time.
More SQL statements
The addition of SQL statements for renaming tables and removing them from the database has been made. In addition, it is possible to add and remove columns from a table at any time.
Changelog
[v1.9.0-RC1] - 2023-10-11
Bug Fixes
- correct immudb name in readme
- allow the local id to be used if present even if remote flag is on
- apply fixes discussed in PR
- insertion ts for key-values should not be equal to the current root ts
- Makefile: remove webconsole tag from immuclient/immuadmin builds
- embedded/appendable: explicit freebsd build clauses
- embedded/document: ensure multi-indexing is enabled
- embedded/document: avoid waiting for tx to be committed
- embedded/sql: advance position when decoding value at deleted column
- embedded/store: use correct index path
- embedded/store: handle transient key update
- embedded/store: read lock when fetching indexer
- embedded/store: precommitted transaction discarding recedes durable state
- embedded/store: read lock when pausing indexers
- embedded/tbtree: snapshot validation
- embedded/tbtree: consider offset for history count calculation
- embedded/tbtree: proper _rev calculation
- pkg/server: buffer reuse
Changes
- build with swaggerui
- unnecessary use of fmt.Sprintf
- use copy instead of a loop
- align covered packages when pulling and merging
- unnecessary use of fmt.Sprintf
- cmd/immuclient: display raw column selector in table header
- deps: bump golang.org/x/net from 0.10.0 to 0.12.0
- deps: bump golang.org/x/crypto from 0.10.0 to 0.11.0
- deps: bump golang.org/x/crypto from 0.13.0 to 0.14.0
- deps: bump golang.org/x/crypto from 0.12.0 to 0.13.0
- deps: bump golang.org/x/sys from 0.9.0 to 0.10.0
- deps: bump golang.org/x/net from 0.14.0 to 0.15.0
- deps: bump google.golang.org/grpc
- deps: bump golang.org/x/sys from 0.11.0 to 0.12.0
- deps: bump google.golang.org/grpc in /test/e2e/truncation
- deps: bump google.golang.org/grpc
- deps: bump golang.org/x/net from 0.15.0 to 0.17.0
- deps: bump github.com/grpc-ecosystem/grpc-gateway/v2
- deps: bump securego/gosec from 2.15.0 to 2.17.0
- deps: bump golang.org/x/sys from 0.10.0 to 0.11.0
- deps: bump golang.org/x/crypto from 0.7.0 to 0.10.0
- deps: bump golang.org/x/net from 0.12.0 to 0.13.0
- deps: bump google.golang.org/grpc from 1.55.0 to 1.56.2
- deps: bump golang.org/x/net from 0.13.0 to 0.14.0
- embedded/document: register username when applying a change
- embedded/document: enable multi-indexing in doc engine tests
- embedded/document: encoded document using valRef
- embedded/document: attach username when auditing document
- embedded/sql: post-commit physical index deletion
- embedded/sql: uuid decoding
- embedded/sql: improve internal index naming
- embedded/sql: use declared constant for fixed ids
- embedded/sql: insertion benchmark
- embedded/sql: historical queries over primary index
- embedded/sql: dynamic indexing
- embedded/sql: deletion of primary index path
- embedded/sql: multi-snapshop mvvc
- embedded/sql: temporal queries with multi-indexing
- embedded/sql: transactional drops
- embedded/sql: unique index creation supported on empty tables
- embedded/sql: support parenthesis as datatype constraint delimiter
- embedded/store: multi-indexing
- embedded/store: ensure index is erased from disk
- embedded/store: wip multi-indexing
- embedded/store: history returning value refs
- embedded/store: indexer alloc its tx
- embedded/store: remove metastate
- embedded/store: history with rev count
- embedded/store: injective index mapper
- embedded/store: ensure snapshot up to date
- embedded/store: indexing callbacks
- embedded/store: key reader including historical entries
- embedded/store: indexing prefix
- embedded/store: entry mapper
- embedded/tbtree: value-preserving history
- embedded/tbtree: hcount serialization
- embedded/tbtree: fetching historical values
- embedded/tbtree: wip value-preserving history
- embedded/tbtree: value-preserving history
- embedded/tbtree: context propagation
- pkg/api: adjust doc serializations to match verification
- pkg/api: endpoint improvements
- pkg/client: add setAll to immuclient mock
- pkg/client: use buf for msg exchange
- pkg/database: context propagation
- pkg/database: context propagation
- pkg/database: fix remote storage paths
- pkg/database: increase delay when tx is not present
- pkg/database: keept reading from specific tx
- pkg/database: multi-indexing database
- pkg/database: doc audit without retrieving payloads
- pkg/database: register username when applying a change
- pkg/database: fix remote storage paths
- pkg/database: mandatory wait with async replication
- pkg/database: kv count
- pkg/server: register username when applying a change in doc apis
- pkg/server: minor code adjustment
- pkg/stdlib: non transactional ddl stmts
- pkg/truncator: use embedded/logger package
- pkg/verification: minor doc verification improvements
- swagger: use embedded logger package
- tests: Tests cleanup
Code Refactoring
- pkg/logger: move logger from pkg to embedded
Features
- update readme
- prevent identifier from creation when use external id option
- pass logger to heartbeater
- add flag for using external id as a main one
- embedded/document: register user when creating collection
- embedded/document: doc audit without retrieving payloads
- embedded/document: remove field from collection
- embedded/document: add field to collection
- embedded/sql: async multi-indexing
- embedded/sql: extra metadata when creating tx
- embedded/sql: include _rev column in historical queries
- embedded/sql: drop index and table stmts
- embedded/sql: table history
- embedded/sql: query including historical rows
- embedded/sql: dynamic multi-indexing
- embedded/sql: wip uuid datatype support
- embedded/sql: drop column stmt
- embedded/store: use index attribute in kv metadata
- embedded/store: getBetween
- embedded/store: extra tx metadata
- embedded/store: transactionaless multi-indexing
- embedded/tbtree: getBetween
- embedded/tbtree: key reader supporting historical values
- pkg/api: docAudit returning timestamp and possibility to omit payloads
- pkg/api: re-enable swagger ui
- pkg/api: include username in document audit response
- pkg/api: add field and remove field endpoints
- pkg/database: add user when creating collection
- pkg/server: add user when creating collection
Reverts
- chore: remove initial swagger support
Downloads
Docker image
https://hub.docker.com/r/codenotary/immudb
immudb Binaries
File | SHA256 |
---|---|
immudb-v1.9.0-RC1-darwin-amd64 | 0de7525bcb60f7859f4944bd33469251292799c79282fae9b38d701ab1f6a960 |
immudb-v1.9.0-RC1-darwin-arm64 | ea33b9c98de5421356b7bbfae90913125a78d6fae7665e3a29952d65529fbbde |
immudb-v1.9.0-RC1-freebsd-amd64 | 9c8e2a3c8c54bce68f56a85b7d0adfe1b4e9624ace2513e6b7b119c9ffbb0c08 |
immudb-v1.9.0-RC1-linux-amd64 | d4d6217ece830105f0e57a0ae1b756b522d6afc024eada5535d18f6e35b86003 |
immudb-v1.9.0-RC1-linux-amd64-fips | 18288be1987b9095831bf54018cb1e82829a9a9e1f4316180fbad37f5710d700 |
immudb-v1.9.0-RC1-linux-amd64-static | 2ef738f413a9ef3d3af5f53cb343155ec69c79d81feb329dd32c84ce5eff12ca |
immudb-v1.9.0-RC1-linux-arm64 | de4910464b103e932355f02e267834ed8d2e338eb2ca81f0f1b2ca1be543bdf4 |
[immudb-v1.9.0-RC1-linux-s390... |
v1.5.0
Release notes
We are excited to introduce immudb 1.5, which has several new features: MVCC: Multi-Version Concurrency Control, Data Retention, Performance Improvements, Float64 data-type and Document Data Model APIs. In addition to fixing bugs, we enhanced the overall experience.
MVCC: Multi-Version Concurrency Control
Detection of conflicts is automatic when multiple transactions are processed concurrently. MVCC in conjunction with snapshots provides a lock-free and optimistic approach to ensuring data consistency.
Data Retention
Data retention refers to the practice of keeping data for a specific period of time before deleting it. This practice is commonly used in various industries and organizations to comply with legal and regulatory requirements, as well as to manage storage space and maintain data integrity.
One of the primary benefits of data retention is its ability to help maintain disk space. By setting a retention period, organizations can automatically delete data that is no longer needed, freeing up disk space for new data. This can be particularly useful for organizations that deal with large amounts of data, such as those in the financial or healthcare industries, where storing vast amounts of data can be costly.
To get more information about data retention please refer to the documentation on docs.immudb.io.
Performance Improvements
Indexing
Concurrent bulk indexing makes indexing faster than ever. It simultaneously indexes all entries within a single transaction. Moreover, multiple transactions can be indexed at once.
Transaction logs
As of this release, values can be stored in the same transactions logs as headers. When this mode is enabled, transaction commits may be speed up by up to 60%, but data retention will not be supported. The setting can only be set at the time of database creation, but a replica can have a different setting.
To further speed up transaction processing, file preallocation can also be enabled. On Linux, fdata_sync will be used when this setting is enabled. As a result of enabling file preallocation and embedded values mode in our initial evaluations, transaction throughput was increased by up to 100% (in comparison with the previous immudb release v1.4.1).
Float64 data-type
It is now possible to use double-precision floating-point data types with SQL according to IEEE-754 64-bit floating-point specification.
Document Data Model API
The document-data model provides simple yet powerful storage. It is possible to store and retrieve documents represented as JSON documents based on conditions that relate to indexed fields.
Changelog
[v1.5.0] - 2023-06-20
Bug Fixes
- embedded/store: handle replication of empty values
Changes
- embedded/document: naming validations
- embedded/document: allow hyphen in doc naming
- embedded/document: collection and field naming validations
- embedded/store: embedded values and prealloc disabled by default
[v1.5.0-RC1] - 2023-06-16
Bug Fixes
- build/Dockerfile.immuadmin to reduce vulnerabilities
- build/Dockerfile.immuclient to reduce vulnerabilities
- build/Dockerfile.immuadmin to reduce vulnerabilities
- build/Dockerfile.rndpass to reduce vulnerabilities
- build/Dockerfile.full to reduce vulnerabilities
- modify tests for new object db initialisation
- build/Dockerfile.full to reduce vulnerabilities
- build/Dockerfile.rndpass to reduce vulnerabilities
- table id generation
- build/Dockerfile.immuclient to reduce vulnerabilities
- docs: bump golang.org/x/net to 0.7.0 in docs and test pkg
- embedded/ahtree: correct calculation of payload offset
- embedded/appendable: proper closing of non-required chunks
- embedded/document: support nil docs
- embedded/document: proper column renaming
- embedded/document: assign correct revision number
- embedded/document: close readers before updating document
- embedded/document: id field conversion
- embedded/document: proper handling of deleted documents
- embedded/document: validate doc is properly initialized
- embedded/document: validate doc is properly initialized
- embedded/sql: do not force columns to have max key length when unspecified
- embedded/sql: include explicit close into sqlTx options
- embedded/sql: multi-row conflict handling
- embedded/sql: implicit conversion within expressions
- embedded/sql: consider 0 as no limit
- embedded/sql: parsing of exists stmt
- embedded/sql: like operator supporting null values
- embedded/sql: crash when RowReader.Read() returns error
- embedded/sql: proper handling of parameters in row readers
- embedded/store: force snapshot to include mandatory mvcc changes
- embedded/store: ensure snapshot is closed for read-only txs
- embedded/store: integrity checks covering empty values
- embedded/store: avoid dead-lock when exporting tx with external commit allowance mode
- embedded/tbtree: fix error comparison
- embedded/tbtree: rollback to the most recent snapshot when insertion fails
- embedded/tbtree: fix snapshot getKeyWithPrefix
- embedded/tbtree: proper kv validation
- embedded/tbtree: fix snapshot getKeyWithPrefix
- go.mod: bump go version to 1.17 in go.mod
- helm: set securityContext and podSecurityContext at correct location
- pkg/api: create collection endpoint with path parameter
- pkg/api: fix and implement LIKE and NOT_LIKE operator when querying documents
- pkg/client: ensure ticker is properly stopped
- pkg/client: return error when verifiedGet operation fails
- pkg/database: read-only document API for replicas
- pkg/database: skip eof error during scan
- pkg/database: read from err channel
- pkg/database: wrap propagated context
- pkg/database: fix truncation and contemplate entry-less txs
- pkg/replicator: check stream is properly initialized
- pkg/server: do not set trailer metadata when replication is done with bidirectional streamming
- pkg/server: ensure error propagation when sending headers
- pkg/server: use grpc interceptors with grpc proxy
- pkg/server: request explicit close when creating a rw sql tx
- pkg/server: ensure tx is closed upon error
- pkg/server: close document readers before cancelling txs
- pkg/server: thread-safe doc reader during session handling
- pkg/stream: handle the case when message fits in a single chunk
- pkg/truncator: adjust plan logic and contemplate empty txs
- pkg/verification: document comparison with proto equals
- push.yml: update min go version
Changes
- Add reformatting of protobuf file on build/codegen
- rename DocumentBulkInsert to DocumentInsertMany
- Update build/RELEASING.md file
- allow multiple order by clauses
- replace schemav2 with protomodel in truncator test
- handle no more doc error inside response in search
- use sys/unix package
- remove docker test provider
- update document with id if not nil
- use gosec action
- add updatecollection api
- copy document catalogue when truncating db
- add DocumentFindOneAndUpdate api
- wait for immudb to get initialized
- add test case for uncommitted tx not increasing table count
- pass transaction to upsert function
- check invalid search id in search request
- add monotically increasing number to doc id generation
- add document audit api
- change DocumentFindOneAndUpdate to DocumentUpdate
- return sql reader on document search
- add order by clause in search
- use sql statement for delete than raw query
- add ReadN method to document reader
- add documentReader iterator to read documents
- remove initial swagger support
- exclude generated code from coverage
- exclude generated code from coverage
- add unique search id for paginated readers
- fix TestFloatSupport test case
- simplified codegen
- fix tests
- change DeleteTableStmt to DropTableStmt
- generate proto requests for DocumentDelete api
- return ErrNoMoreDocuments instead of sql.ErrNoMoreRows
- add DocumentDelete api
- add default size for document reader lru cache
- add lru cache for paginated readers
- fix merge issues
- add pagination support when fetching documents
- fix failing verification test
- increase test coverage for document engine
- add bulk insert api
- TruncateDatabase endpoint should use the same ongoing Truncator if present
- address review comment
- add go-acc and goveralls to ext-tools folder
- delete columns on table deletion
- check for column before adding index on collection update
- add option for non unique indexes on collection
- ci: improve notifications
- cmd/immuadmin: flag to specify the usage of embedded values
- cmd/immuadmin: add truncate cmd to immuadmin
- cmd/immuadmin: modify truncation settings schema
- deps: bump golang.org/x/crypto
- deps: bump github.com/jaswdr/faker from 1.4.3 to 1.16.0
- deps: bump securego/gosec from 2.14.0 to 2.15.0
- deps: bump github.com/codenotary/immudb
- deps: bump github.com/influxdata/influxdb-client-go/v2
- deps: bump github.com/golang/protobuf from 1.5.2 to 1.5.3
- deps: bump github.com/rogpeppe/go-internal from 1.8.0 to 1.9.0
- deps: bump github.com/lib/pq from 1.10.7 to 1.10.9
- deps: bump github.com/lib/pq from 1.10.2 to 1.10.7
- deps: bump golang.org/x/net from 0.8.0 to 0.9.0
- deps: bump github.com/rs/xid from 1.3.0 to 1.5.0
- deps: bump github.com/stretchr/testify from 1.8.0 to 1.8.2
- deps: bump aws-actions/configure-aws-credentials from 1 to 2
- deps: bump github.com/spf13/cobra from 1.2.1 to 1.6.1
- deps: bump git...
v1.5.0-RC1
Changelog
[v1.5.0-RC1] - 2023-06-16
Bug Fixes
- build/Dockerfile.immuadmin to reduce vulnerabilities
- build/Dockerfile.immuclient to reduce vulnerabilities
- build/Dockerfile.immuadmin to reduce vulnerabilities
- build/Dockerfile.rndpass to reduce vulnerabilities
- build/Dockerfile.full to reduce vulnerabilities
- modify tests for new object db initialisation
- build/Dockerfile.full to reduce vulnerabilities
- build/Dockerfile.rndpass to reduce vulnerabilities
- table id generation
- build/Dockerfile.immuclient to reduce vulnerabilities
- docs: bump golang.org/x/net to 0.7.0 in docs and test pkg
- embedded/ahtree: correct calculation of payload offset
- embedded/appendable: proper closing of non-required chunks
- embedded/document: support nil docs
- embedded/document: proper column renaming
- embedded/document: assign correct revision number
- embedded/document: close readers before updating document
- embedded/document: id field conversion
- embedded/document: proper handling of deleted documents
- embedded/document: validate doc is properly initialized
- embedded/document: validate doc is properly initialized
- embedded/sql: do not force columns to have max key length when unspecified
- embedded/sql: include explicit close into sqlTx options
- embedded/sql: multi-row conflict handling
- embedded/sql: implicit conversion within expressions
- embedded/sql: consider 0 as no limit
- embedded/sql: parsing of exists stmt
- embedded/sql: like operator supporting null values
- embedded/sql: crash when RowReader.Read() returns error
- embedded/sql: proper handling of parameters in row readers
- embedded/store: force snapshot to include mandatory mvcc changes
- embedded/store: ensure snapshot is closed for read-only txs
- embedded/store: integrity checks covering empty values
- embedded/store: avoid dead-lock when exporting tx with external commit allowance mode
- embedded/tbtree: fix error comparison
- embedded/tbtree: rollback to the most recent snapshot when insertion fails
- embedded/tbtree: fix snapshot getKeyWithPrefix
- embedded/tbtree: proper kv validation
- embedded/tbtree: fix snapshot getKeyWithPrefix
- go.mod: bump go version to 1.17 in go.mod
- helm: set securityContext and podSecurityContext at correct location
- pkg/api: create collection endpoint with path parameter
- pkg/api: fix and implement LIKE and NOT_LIKE operator when querying documents
- pkg/client: ensure ticker is properly stopped
- pkg/client: return error when verifiedGet operation fails
- pkg/database: read-only document API for replicas
- pkg/database: skip eof error during scan
- pkg/database: read from err channel
- pkg/database: wrap propagated context
- pkg/database: fix truncation and contemplate entry-less txs
- pkg/replicator: check stream is properly initialized
- pkg/server: do not set trailer metadata when replication is done with bidirectional streamming
- pkg/server: ensure error propagation when sending headers
- pkg/server: use grpc interceptors with grpc proxy
- pkg/server: request explicit close when creating a rw sql tx
- pkg/server: ensure tx is closed upon error
- pkg/server: close document readers before cancelling txs
- pkg/server: thread-safe doc reader during session handling
- pkg/stream: handle the case when message fits in a single chunk
- pkg/truncator: adjust plan logic and contemplate empty txs
- pkg/verification: document comparison with proto equals
- push.yml: update min go version
Changes
- Add reformatting of protobuf file on build/codegen
- rename DocumentBulkInsert to DocumentInsertMany
- Update build/RELEASING.md file
- allow multiple order by clauses
- replace schemav2 with protomodel in truncator test
- handle no more doc error inside response in search
- use sys/unix package
- remove docker test provider
- update document with id if not nil
- use gosec action
- add updatecollection api
- copy document catalogue when truncating db
- add DocumentFindOneAndUpdate api
- wait for immudb to get initialized
- add test case for uncommitted tx not increasing table count
- pass transaction to upsert function
- check invalid search id in search request
- add monotically increasing number to doc id generation
- add document audit api
- change DocumentFindOneAndUpdate to DocumentUpdate
- return sql reader on document search
- add order by clause in search
- use sql statement for delete than raw query
- add ReadN method to document reader
- add documentReader iterator to read documents
- remove initial swagger support
- exclude generated code from coverage
- exclude generated code from coverage
- add unique search id for paginated readers
- fix TestFloatSupport test case
- simplified codegen
- fix tests
- change DeleteTableStmt to DropTableStmt
- generate proto requests for DocumentDelete api
- return ErrNoMoreDocuments instead of sql.ErrNoMoreRows
- add DocumentDelete api
- add default size for document reader lru cache
- add lru cache for paginated readers
- fix merge issues
- add pagination support when fetching documents
- fix failing verification test
- increase test coverage for document engine
- add bulk insert api
- TruncateDatabase endpoint should use the same ongoing Truncator if present
- address review comment
- add go-acc and goveralls to ext-tools folder
- delete columns on table deletion
- check for column before adding index on collection update
- add option for non unique indexes on collection
- ci: improve notifications
- cmd/immuadmin: flag to specify the usage of embedded values
- cmd/immuadmin: add truncate cmd to immuadmin
- cmd/immuadmin: modify truncation settings schema
- deps: bump golang.org/x/crypto
- deps: bump github.com/jaswdr/faker from 1.4.3 to 1.16.0
- deps: bump securego/gosec from 2.14.0 to 2.15.0
- deps: bump github.com/codenotary/immudb
- deps: bump github.com/influxdata/influxdb-client-go/v2
- deps: bump github.com/golang/protobuf from 1.5.2 to 1.5.3
- deps: bump github.com/rogpeppe/go-internal from 1.8.0 to 1.9.0
- deps: bump github.com/lib/pq from 1.10.7 to 1.10.9
- deps: bump github.com/lib/pq from 1.10.2 to 1.10.7
- deps: bump golang.org/x/net from 0.8.0 to 0.9.0
- deps: bump github.com/rs/xid from 1.3.0 to 1.5.0
- deps: bump github.com/stretchr/testify from 1.8.0 to 1.8.2
- deps: bump aws-actions/configure-aws-credentials from 1 to 2
- deps: bump github.com/spf13/cobra from 1.2.1 to 1.6.1
- deps: bump github.com/grpc-ecosystem/grpc-gateway/v2
- deps: bump google.golang.org/grpc from 1.46.2 to 1.54.0
- deps: bump github.com/spf13/viper from 1.12.0 to 1.15.0
- embedded/ahtree: add inline comments
- embedded/appendable: fsync freebsd
- embedded/appendable: automatic file creation only when appending
- embedded/appendable: use fdatasync when file is preallocated
- embedded/appendable: file syncing per os
- embedded/appendable: support file preallocation
- embedded/appendable: file syncing using fdatasync when available
- embedded/appendable: minor improvements reading files
- embedded/appendable: metadats with putBool
- embedded/document: remove dead-code
- embedded/document: add float support for doc engine
- embedded/document: raw document validation
- embedded/document: improve error handling
- embedded/document: transactional collection update
- embedded/document: support null values in indexed attributes
- embedded/document: retrieval of raw document
- embedded/document: move source code into dedicated files
- embedded/document: use onclose callback to close the tx
- embedded/document: return struct when auditing document history
- embedded/document: add test to ensure key ordering in document during serialization
- embedded/document: blob type not yet supported
- embedded/document: catch key alredy exists error
- embedded/document: catch tx read conflict error
- embedded/document: translate table already exists error
- embedded/document: minor var renaming
- embedded/document: fix query stmt generator and add tests
- embedded/document: leverage sqlengine lazy index contraint evaluation
- embedded/document: binary serialization of doc payload
- embedded/document: use query limit when searching
- embedded/document: wip continue with improvements
- embedded/document: wip continue with improvements
- embedded/document: wip continue with improvements
- embedded/document: wip improvements
- embedded/document: add collection deletion api support
- embedded/document: minor code simplification
- embedded/document: add variable length support for multiple types
- embedded/document: ensure order by clauses are used when deleting and updating
- embedded/document: improve error messages
- embedded/document: minor code adjustments
- embedded/document: transactional collection and document creation
- embedded/document: improve error messages
- embedded/document: possibility to specify desc order when querying document history
- embedded/document: add tests for blob type
- embedded/document: avoid public dependency on sql
- embedded/document: add test cases for collection on doc engine
- embedded/document: change querier from BinBoolExp to CmpBoolExp
- embedded/document: transactional document creation
- embedded/document: add document id generation
- embedded/document: typo in error message
- embedded/htree: allow creation of empty hash trees
- embedded/object: add document abstraction
- ...
v1.4.1
Release notes
We're pleased to announce new version of immudb: 1.4.1. This is a smaller maintenance release that fixes important issues discovered in the previous 1.4.0 release.
Important issues fixed
Along with this release, the go SDK for immudb comes with fixes to two security vulnerabilities (CVE-2022-36111 and CVE-2022-39199) that we've discovered through an internal security review. Those vulnerabilities only affect the client SDK that is part of the immudb release - for that reason make sure that the most recent go SDK version is used in your application.
More information about those vulnerabilities can be found in those adversaries:
Small improvements
Besides important fixes, this release also comes with improved naming convention related to replication options and an option to reset admin password without knowledge of the previous password. Such password reset is helpful in case the admin password is lost and can also be used to ensure there's a correct admin password set in cloud deployments such as Kubernetes.
Changelog
[v1.4.1] - 2022-11-16
Bug Fixes
- Change replication-related terms in codebase
- Change replication-related terms in tests
- cmd: Rename replication flags to follow consistent convention
- cmd/immudb: Better description of the
--force-admin-password
flag - cmd/immudb: Fix description of the
force-admin-password
flag - embedded/appendable: fsync parent directory
- embedded/appendable: fsync parent folder in remote appedable
- pkg: Rename replication-related fields in GRPC protocol
- pkg/client: Delay server identity validation
- pkg/client/cache: Add methods to validate server identity
- pkg/client/cache: Validate server's identity
- pkg/server: Remove includeDeactivated flag when querying for users
- pkg/server/servertest: Add uuid to buffconn server
- pkg/server/servertest: Fix resetting grpc connection
- test/perf-test-suite: Avoid dumping immudb logo on perf test results file
- test/performance-test-suite: Ensure results are shown after proper is finished
- verification: Additional Linear proof consistency check
- verification: Recreate linear advance proofs for older servers
Changes
- pkg/server: Add logs for activities related to users
- ci: migrate deprecating set-output commands
- cmd/immudb: Allow resetting sysadmin password
- docs/security: Be less specific about package version in examples
- docs/security: Add resources for the linear-fake vulnerability
- embedded/appendable: sync directories
- embedded/store: Disable asynchronous AHT generation
- embedded/store: Remove AHT Wait Hub
- pkg/client: Document
WithDisableIdentityCheck
option - pkg/client/cache: Describe serverIdentity parameter
- pkg/client/cache: Limit the hash part of the identity file name
- pkg/client/state: Cleanup mutex handling in StateService
- pkg/server: Warn if sysadmin user password was not reset
- pkg/server: Better warning for unchanged admin password
- test/performance-test-suite: Add summary to json output
Features
- ci: fix message and input
- ci: add runner name to mattermost message header
- ci: simplify results extraction
- ci: extract performance tests into separate workflow to be reused
- ci: add scheduled daily test runs and send results to Mattermost
- pkg/replication: Disable server's identity check in internal replication
Downloads
Docker image
https://hub.docker.com/r/codenotary/immudb
immudb Binaries
File | SHA256 |
---|---|
immudb-v1.4.1-darwin-amd64 | 120966d077c5ffca4bfd6745473a06c0ca219291adc49960108cc476e418cf5a |
immudb-v1.4.1-darwin-arm64 | d6469914115a58f9462c07b1d5aa0dbb1e777b80477d8baf8108bf51deabdd22 |
immudb-v1.4.1-freebsd-amd64 | 05a932c73bbb4305f6f7975a3bdc0f2198f8968776b16b84497584bb2742bc5a |
immudb-v1.4.1-linux-amd64 | a5ae370d6475026db7df5906ba037dc708b0a8bda52a0adf0d06c3dcdee587f1 |
immudb-v1.4.1-linux-amd64-fips | db4477eb54d0437b9b145dfa9f77b593fc3a149906b0c5cc1c4ed87301786298 |
immudb-v1.4.1-linux-amd64-static | 7b2c31569a513e072cefbdc7cbcf7c36421516230bf388a5156d95a5f3034b02 |
immudb-v1.4.1-linux-arm64 | 3d5f8784bdf652d2c067885d19b330d28bf497459b59a9358c0774dbff1f4d6f |
immudb-v1.4.1-linux-s390x | ee4efbcb850ab56da2fd3ed18226bd9808de404fd69ea425567952492e320e96 |
immudb-v1.4.1-windows-amd64.exe | 707963320c94390ac9f9ce8d20d4f274baf636df789c4a65f3dc1a74bfd7f52c |
immuclient Binaries
File | SHA256 |
---|---|
immuclient-v1.4.1-darwin-amd64 | 076c4f474e8f57d59ec20016d5f445205b80d16c0a7aebe6ae0b1d07310c5360 |
immuclient-v1.4.1-darwin-arm64 | 41bfe74f900e7bbd9cc57b89d3111edf9faa3f5ff4204995e352f02c78fa3c53 |
immuclient-v1.4.1-freebsd-amd64 | 286c48668fd772464217f26cfc30772819175e61452d860d44ad6ec04c437c79 |
immuclient-v1.4.1-linux-amd64 | 3ab44ad6d956a7f4ecff2da08738227e63cd4816ef7047dc63f671c6536969b7 |
immuclient-v1.4.1-linux-amd64-fips | 75cbdc3614cb345af53e127aaaf4e7633fde4710f1ce1f1191c12b1d7ce4ab0f |
immuclient-v1.4.1-linux-amd64-static | 1f33880078225f56b253e663fb5d6e8ef1927d4bc9019ad8ef40a1863d99be7e |
immuclient-v1.4.1-linux-arm64 | 30e736810ab08f74e4dbd22b9ddb369b321dde1c65b35879a3ed164c97e5e8a0 |
immuclient-v1.4.1-linux-s390x | 6fe337a5d14511eda8cad40d7ec4f6c483bf5b2811229678833286cfa373a7a0 |
immuclient-v1.4.1-windows-amd64.exe | 6790a7dc306f3669cb824774b45c140c9331b6a83ae8fb10629a7c58c495405d |
immuadmin Binaries
File | SHA256 |
---|---|
immuadmin-v1.4.1-darwin-amd64 | caf3308f916d43c79fc14c77c3452013f3580b4e7edfd0fe949219d945d3b245 |
immuadmin-v1.4.1-darwin-arm64 | 1a82fef2f16715591da9e74001a8db0d0838ce6e273cf08443e8261f89f6fedb |
immuadmin-v1.4.1-freebsd-amd64 | 42679b08927dcbef84b18eac78391e78c29a5c817e9febf56bc18485ee39c5a5 |
immuadmin-v1.4.1-linux-amd64 | 24126f6699b3ae3fe18910c5a4fb45d996bc9237ebb92e91ee2916b8f8379b0c |
immuadmin-v1.4.1-linux-amd64-fips | b5b457b179384a72a6486a5e82f16f8bfe449b467e31373627f94a736f7d7afb |
immuadmin-v1.4.1-linux-amd64-static | e68a4fc4640082a67522c9a77f081ee513cc87732900b3f0dd644deda6a58843 |
immuadmin-v1.4.1-linux-arm64 | 9cc7d0283b4e7bd58c1daa39ec1c93c9bdaeb7818b11ac5ac88a8d91be3ba658 |
immuadmin-v1.4.1-linux-s390x | 22408bc7d8e0cef8378fcff8b1079bfa574e0336e5ca77f77facf21c67e3f24e |
immuadmin-v1.4.1-windows-amd64.exe | 2fa628855a0c17aecb5cc675297a1bf217bbf595f40701ed740d6351279f7e2d |
v1.4.1-RC1
Changelog
[v1.4.1-RC1] - 2022-11-16
Bug Fixes
- Change replication-related terms in codebase
- Change replication-related terms in tests
- cmd: Rename replication flags to follow consistent convention
- cmd/immudb: Better description of the
--force-admin-password
flag - cmd/immudb: Fix description of the
force-admin-password
flag - embedded/appendable: fsync parent directory
- embedded/appendable: fsync parent folder in remote appedable
- pkg: Rename replication-related fields in GRPC protocol
- pkg/client: Delay server identity validation
- pkg/client/cache: Add methods to validate server identity
- pkg/client/cache: Validate server's identity
- pkg/server: Remove includeDeactivated flag when querying for users
- pkg/server/servertest: Add uuid to buffconn server
- pkg/server/servertest: Fix resetting grpc connection
- test/perf-test-suite: Avoid dumping immudb logo on perf test results file
- test/performance-test-suite: Ensure results are shown after proper is finished
- verification: Additional Linear proof consistency check
- verification: Recreate linear advance proofs for older servers
Changes
- ci: migrate deprecating set-output commands
- cmd/immudb: Allow resetting sysadmin password
- docs/security: Be less specific about package version in examples
- docs/security: Add resources for the linear-fake vulnerability
- embedded/appendable: sync directories
- embedded/store: Disable asynchronous AHT generation
- embedded/store: Remove AHT Wait Hub
- pkg/client: Document
WithDisableIdentityCheck
option - pkg/client/cache: Describe serverIdentity parameter
- pkg/client/cache: Limit the hash part of the identity file name
- pkg/client/state: Cleanup mutex handling in StateService
- pkg/server: Warn if sysadmin user password was not reset
- pkg/server: Better warning for unchanged admin password
- test/performance-test-suite: Add summary to json output
Features
- ci: fix message and input
- ci: add runner name to mattermost message header
- ci: simplify results extraction
- ci: extract performance tests into separate workflow to be reused
- ci: add scheduled daily test runs and send results to Mattermost
- pkg/replication: Disable server's identity check in internal replication
Downloads
Docker image
https://hub.docker.com/r/codenotary/immudb
immudb Binaries
File | SHA256 |
---|---|
immudb-v1.4.1-RC1-darwin-amd64 | 913a13e6502fa69e2a1a5660e1c1f4b0083da20858ecd4006febe2f05abc454a |
immudb-v1.4.1-RC1-darwin-arm64 | a260a1d9e47ab57dced53dc1c6202a830b9738f6be7159b223266c94974b9e1d |
immudb-v1.4.1-RC1-freebsd-amd64 | 1d566d726e9c459a903d83ae777c1515b52d8bfaccd2d44ce5378b6e56034636 |
immudb-v1.4.1-RC1-linux-amd64 | bcaadfa521cbd8b38d5ead125a3ac00bb263e37b6d0a9e0f8bf7405c48492f51 |
immudb-v1.4.1-RC1-linux-amd64-fips | 176b8a3e53ab3ae69215e7f3eaafaf7def986649c5c30b16f45504a8b5c18247 |
immudb-v1.4.1-RC1-linux-amd64-static | f7ffb591c50cf75ad102f04e7ac9d13186f5a6e87e9123954619a58aaab28052 |
immudb-v1.4.1-RC1-linux-arm64 | 1fa1438ccee5ef53c115c2977f0b26fef0e90ac6004d7ce2cfe221212e428132 |
immudb-v1.4.1-RC1-linux-s390x | 55a38e4473d68e1e80ba21148ceed57bef3ed8c9a856da869e064b5fd02f7a4f |
immudb-v1.4.1-RC1-windows-amd64.exe | 457dc5884aee3fd04895d4da93ec2aa778b6393b7bfb916b5f0653342897ead2 |
immuclient Binaries
File | SHA256 |
---|---|
immuclient-v1.4.1-RC1-darwin-amd64 | c5c0485e7ef0187034c5e338162e1a287cfbf97ce7849a0d89bfe4c0658d15d0 |
immuclient-v1.4.1-RC1-darwin-arm64 | 19e9b343cb12d2801821ca3a7f24f4c8e07fef5232d68e30e5bb7f9d4a940c11 |
immuclient-v1.4.1-RC1-freebsd-amd64 | 1338d111eef945a64fcf80eb093aeeac71e8814488a88ac2c7175425513f715f |
immuclient-v1.4.1-RC1-linux-amd64 | f5e0a5291c052c036707922826f54990e18acaa4d43f574c16ec2404f01e5024 |
immuclient-v1.4.1-RC1-linux-amd64-fips | 46d40a9f416b410a88d21ae7acae1375508df73dd577824bedd2e434e091fe28 |
immuclient-v1.4.1-RC1-linux-amd64-static | 5cac4760b6c4e35512634753fdf78612c2481f05eb408cbe686cc5b5f66a7f5d |
immuclient-v1.4.1-RC1-linux-arm64 | 12ee3dcff73320fea2aa6cf3fc59c2273300662ef61b9ad8e8e7d7de53cea2a3 |
immuclient-v1.4.1-RC1-linux-s390x | 4843734bf3607185c6410268b9ced9800319b95ab3e87cc51de847f97beb27d8 |
immuclient-v1.4.1-RC1-windows-amd64.exe | be8f1ec58b80625b6fe45e4b5a63e8f6e4ed471620d742aef0f812d0983a5544 |
immuadmin Binaries
File | SHA256 |
---|---|
immuadmin-v1.4.1-RC1-darwin-amd64 | c53bb2d72aab8751a53fcbc999edb22277c8d7506a82c475c46a65c8da935fdb |
immuadmin-v1.4.1-RC1-darwin-arm64 | 6bcc0afeca868485c1e1b87b5072ee18b3cc2e1ba557b159aa1c2a8b21a4e1f8 |
immuadmin-v1.4.1-RC1-freebsd-amd64 | b8c326d302e27d7e0c7c2ed7a06bc9c88cc752bd8ed8b3a8b0a76ff19e679552 |
immuadmin-v1.4.1-RC1-linux-amd64 | a5332af65375b881ef65c4828808e962f985303d5ff168b855c63b2969200497 |
immuadmin-v1.4.1-RC1-linux-amd64-fips | 6ead7189d35149645e44df5c06df73317322930d5b663c4e54f1532c49f3092f |
immuadmin-v1.4.1-RC1-linux-amd64-static | 458c4136443d8b5366f435dd979b698821954d511cdfc1931d64a5066fba52f6 |
immuadmin-v1.4.1-RC1-linux-arm64 | 7dd1a1090dd730680f37aefb6d15fbb29e0a4e87ecc82d1723a25f6264b3eb4e |
immuadmin-v1.4.1-RC1-linux-s390x | 1034aca0e52e03dadeb3e59dbd22cc58f400d2a301efed401cdfca9a64b73ff1 |
immuadmin-v1.4.1-RC1-windows-amd64.exe | 14959b7ee6e84cad591ce930166dc7ff3529092d2cc7a8c1ec7b641ec95e800c |
v1.4.0
Release notes
We're pleased to introduce version 1.4 of immudb, which comes with two major features: FIPS-Compliant Builds and Synchronous Replication. And, of course, we’ve fixed bugs and made other improvements.
FIPS-Compliant Builds
Starting with v1.4.0, immudb can be compiled using the go-boringcrypto fork of the Go compiler, which uses the FIPS 140-2 compliant boringssl library. We now also officially provide FIPS-compliant binaries and Docker images.
What is it? The FIPS 140-2 standard prescribes the design and security requirements for cryptographic modules that may be approved for use by the United States government. FIPS-140 is a collection of computer security standards set by the National Institute of Standards and Technology (NIST) for the United States government. FIPS 140–2 defines the critical security parameters vendors must use for encryption implementations sold to the U.S government.
A detailed information about FIPS-compliant immudb build can be found in immudb's source code repository.
Synchronous Replication
Synchronous replication improves the reliability of data replicated across the immudb nodes in a cluster. When an immudb cluster uses synchronous replication, the primary node waits for sufficient transaction confirmations from replicas before it considers the transaction fully committed and durably stored by multiple nodes. This feature increases data durability by allowing any single node in an immudb cluster—including the primary node—to be lost without causing the database state tracked by the nodes and clients to diverge.
Prior to version 1.4, immudb only supports asynchronous replication. When a cluster is configured to use asynchronous replication, replica nodes can lag behind the primary node, and any given transaction committed on the primary node isn’t guaranteed to be replicated to other nodes within a reasonable time period. Thus, transactions committed to a primary node that have not been replicated can be lost if the primary node is irrecoverably lost. When this occurs, the state of the surviving nodes may diverge from the state computed by the immudb client, because the new primary node elected from the remaining replicas could be missing the most recent commits tracked by the clients.
To get more information about synchronous replication please refer to the documentation on docs.immudb.io.
Replication performance
Due to additional synchronization between nodes, commit throughput with synchronous replication will naturally be slower compared to a single-node cluster. The performance difference will depend on various factors such as the speed of disks, network latency, and the number of followers.
In this release we also worked on improvements to the replication mechanism itself, achieving 17 to 20 times larger TX/s replication throughput than what was available in 1.3.2 release.
SDK Updates
This release also comes with significant updates to immudb SDKs. We've brought brand new .Net SDK; added inline documentation to Go SDK; added inline documentation and increased functionality of Python SDK and Java SDK; and made significant updates to the node.js SDK 1.
Changelog
[v1.4.0] - 2022-10-12
Bug Fixes
- build: Do not publish official non-dev images on RC tags
- pkg/client: replace keepAlive context from the original one to the background, avoiding parent expiration
- build: Use correct binary download links
- embedded/store: edge-case calculation of precommitted tx
- embedded/watchers: Fix invariant breakage in watchers
- embedded/watchers: Fix invariant breakage in watchers
- pkg/database: any follower can do progress due to its prefech buffer
- pkg/replication: Do not crash on invalid tx metadata
- pkg/replication: handle replication already closed case
- pkg/replication: discard precommitted txs and continue from latest committed one
- pkg/replication: solve issues when follower diverged from master
- wmbedded/watchers: Correctly fix the original implementation
- Makefile: add fips build flag to test/fips
- Makefile: remove interactive flag from dist/fips command
- ci: fix regex pattern for fips binaries
- cmd/immuadmin: set correct data-type for replication-sync-followers flag
- embedded/store: fix size calculation of precommitted txs
- embedded/store: Fix checking for closed store when syncing TXs
- embedded/store: avoid attempts to commit in wrong order
- embedded/store: expose durable precommitted state
- embedded/store: include allowPrecommitted into tx reader construction
- embedded/store: ensure tx is released upon error
- embedded/store: aht up to precommited tx
- github: Update github actions after migration of Dockerfile's
- pkg/database: return master commit state if failing to read follower precommitted one
- pkg/database: Fix mutex lock in ExportTx
- pkg/database: set follower states holder when changing replication status
- pkg/server: add logs when replicator does not start
Changes
- Rename sync-followers to sync-acks
- cmd/immuclient: include precommit state when quering status
- pkg/server: Better error message when validating replication options
- embedded/watchers: Simplify and document cancellation path
- embedded/watchers: Simplify mutex locking code
- embedded/watchers: single-point for init and cleanup
- pkg/database: wait for tx when a non-existent or non-ready transaction is requested
- pkg/database: add TODO comment on replication passive waiting
- pkg/database: simplify follower's wait
- pkg/replication: Add TX gap metrics
- pkg/replication: Add basic replication metrics
- pkg/replication: improve replication logging
- add dependabot config
- Add empty line between license header and package
- Dockerfile.fips: add fips build changes
- cmd/immuadmin: add new replication flags
- cmd/immuadmin: revert default replication-master-port
- cmd/immuadmin: use default immudb port as default value for replication-master-port flag
- cmd/immuclient: flag replication-sync-enabled to enable sync replication
- cmd/immudb: deprecate replication-enabled towards replication-is-replica
- docker: Move main Dockerfile's to build folder
- docker: Simplify the main Dockerfile
- embedded/store: resolve pre-committed using clogbuf
- embedded/store: wip reduce allocations in exportTx
- embedded/store: mutexless export-tx
- embedded/store: enhanced tx discarding logic
- embedded/store: wip load precommitted txs
- embedded/store: method to dynamically switch to external allowance
- embedded/store: wip wait for precommitted txs
- embedded/store: explicit allowPrecommitted and restricted access to precommitted txs
- embedded/store: minor code simplification
- embedded/store: possibility to read tx header of precommitted txs
- embedded/store: support for concurrent replicated precommits
- embedded/store: tx parsing with sanity checks
- embedded/store: handle commit case when there is nothing new to commit
- embedded/store: tolerate partial data or inconsistencies when loading pre-committed txs
- embedded/store: explanatory comments added
- embedded/store: waits for durable precommitted txs
- embedded/store: minor renaming and comment additions
- embedded/store: add integrity checks when reading precommitted txs
- pkg/api: currentState endpoint includes precommitted info
- pkg/api: explicit sync replication setting
- pkg/api/schema: reformat schema.proto file
- pkg/database: minor typo in comment
- pkg/database: sync exportTx
- pkg/database: improve error comparison
- pkg/database: follower commit progress without additional waits
- pkg/database: handle special case related to sql initialization
- pkg/database: disable automatic sql init on older databases
- pkg/integration: add synchronous replication integration tests
- pkg/replication: allowPreCommitted only with sync replication enabled
- pkg/replication: speed up follower reconnection
- pkg/replication: use session-based authentication
- pkg/replication: handling a particular case in an optimized manner
- pkg/replication: backward compatible replication
- pkg/replication: check committedTxID from master
- pkg/replication: wip optimize concurrency in replicators
- pkg/replication: handle case when follower precommit state is up-to-date but commit state is lies behind
- pkg/replication: sync replication using follower state
- pkg/replication: configurable prefetchTxBufferSize and replicationCommitConcurrency
- pkg/replication: improve error comparison
- pkg/replication: graceful closing
- pkg/replication: further progress in sync replication
- pkg/replication: replicator with backward compatibility mode
- **pkg/re...
-
Some SDKs updates will be released a few days after the immudb release. ↩
v1.4.0-RC2
Changelog
[v1.4.0-RC2] - 2022-10-06
Bug Fixes
- build: Use correct binary download links
- embedded/store: edge-case calculation of precommitted tx
- embedded/watchers: Fix invariant breakage in watchers
- embedded/watchers: Fix invariant breakage in watchers
- pkg/database: any follower can do progress due to its prefech buffer
- pkg/replication: Do not crash on invalid tx metadata
- pkg/replication: handle replication already closed case
- pkg/replication: discard precommitted txs and continue from latest committed one
- pkg/replication: solve issues when follower diverged from master
- wmbedded/watchers: Correctly fix the original implementation
Changes
- embedded/watchers: Simplify and document cancellation path
- embedded/watchers: Simplify mutex locking code
- embedded/watchers: single-point for init and cleanup
- pkg/database: wait for tx when a non-existent or non-ready transaction is requested
- pkg/database: add TODO comment on replication passive waiting
- pkg/database: simplify follower's wait
- pkg/replication: Add TX gap metrics
- pkg/replication: Add basic replication metrics
- pkg/replication: improve replication logging
[v1.4.0-RC1] - 2022-10-04
Bug Fixes
- Makefile: add fips build flag to test/fips
- Makefile: remove interactive flag from dist/fips command
- ci: fix regex pattern for fips binaries
- cmd/immuadmin: set correct data-type for replication-sync-followers flag
- embedded/store: fix size calculation of precommitted txs
- embedded/store: Fix checking for closed store when syncing TXs
- embedded/store: avoid attempts to commit in wrong order
- embedded/store: expose durable precommitted state
- embedded/store: include allowPrecommitted into tx reader construction
- embedded/store: ensure tx is released upon error
- embedded/store: aht up to precommited tx
- github: Update github actions after migration of Dockerfile's
- pkg/database: return master commit state if failing to read follower precommitted one
- pkg/database: Fix mutex lock in ExportTx
- pkg/database: set follower states holder when changing replication status
- pkg/server: add logs when replicator does not start
Changes
- add dependabot config
- Add empty line between license header and package
- Dockerfile.fips: add fips build changes
- cmd/immuadmin: add new replication flags
- cmd/immuadmin: revert default replication-master-port
- cmd/immuadmin: use default immudb port as default value for replication-master-port flag
- cmd/immuclient: flag replication-sync-enabled to enable sync replication
- cmd/immudb: deprecate replication-enabled towards replication-is-replica
- docker: Move main Dockerfile's to build folder
- docker: Simplify the main Dockerfile
- embedded/store: resolve pre-committed using clogbuf
- embedded/store: wip reduce allocations in exportTx
- embedded/store: mutexless export-tx
- embedded/store: enhanced tx discarding logic
- embedded/store: wip load precommitted txs
- embedded/store: method to dynamically switch to external allowance
- embedded/store: wip wait for precommitted txs
- embedded/store: explicit allowPrecommitted and restricted access to precommitted txs
- embedded/store: minor code simplification
- embedded/store: possibility to read tx header of precommitted txs
- embedded/store: support for concurrent replicated precommits
- embedded/store: tx parsing with sanity checks
- embedded/store: handle commit case when there is nothing new to commit
- embedded/store: tolerate partial data or inconsistencies when loading pre-committed txs
- embedded/store: explanatory comments added
- embedded/store: waits for durable precommitted txs
- embedded/store: minor renaming and comment additions
- embedded/store: add integrity checks when reading precommitted txs
- pkg/api: currentState endpoint includes precommitted info
- pkg/api: explicit sync replication setting
- pkg/api/schema: reformat schema.proto file
- pkg/database: minor typo in comment
- pkg/database: sync exportTx
- pkg/database: improve error comparison
- pkg/database: follower commit progress without additional waits
- pkg/database: handle special case related to sql initialization
- pkg/database: disable automatic sql init on older databases
- pkg/integration: add synchronous replication integration tests
- pkg/replication: allowPreCommitted only with sync replication enabled
- pkg/replication: speed up follower reconnection
- pkg/replication: use session-based authentication
- pkg/replication: handling a particular case in an optimized manner
- pkg/replication: backward compatible replication
- pkg/replication: check committedTxID from master
- pkg/replication: wip optimize concurrency in replicators
- pkg/replication: handle case when follower precommit state is up-to-date but commit state is lies behind
- pkg/replication: sync replication using follower state
- pkg/replication: configurable prefetchTxBufferSize and replicationCommitConcurrency
- pkg/replication: improve error comparison
- pkg/replication: graceful closing
- pkg/replication: further progress in sync replication
- pkg/replication: replicator with backward compatibility mode
- pkg/replicator: wip precommitted tx discarding when follower diverged from master
- pkg/server: explicit sync replication
- pkg/server: handle admin user creation with sync replication enabled
- pkg/server: support for systemdb with session-based auth
- pkg/server: display all replication settings
- pkg/server: include sync replication settings in options
- pkg/server: use replication settings
Features
- cmd/immuadmin: flag to set the number of sync followers
- cmd/immudb: flag to set the number of sync followers for systemdb and defaultdb
- embedded/store: functionality to discard precommitted txs
- embedded/store: core support for sync replication
- pkg/api: api extensions to support sync replication
- pkg/database: wip sync replication logic
- pkg/replication: mode to allow tx discarding on followers
- pkg/replication: wip replicator with support for sync replication
- pkg/server: sync replication logic
- pkg/server: Add ability to inject custom database management object
Downloads
Docker image
https://hub.docker.com/r/codenotary/immudb
immudb Binaries
File | SHA256 |
---|---|
immudb-v1.4.0-RC2-darwin-amd64 | 3e4d3cbfa37b93915d8134d25ed1023b23ffa6a149c5bf322b4876806d014eff |
immudb-v1.4.0-RC2-darwin-arm64 | 0b9b164e70b57bbda365850f2ebf74bfc5ae085697bb0ad773643727382957c3 |
immudb-v1.4.0-RC2-freebsd-amd64 | d4510c7bc0b165e51de3bae24d5dfb194b2540acc3930da5b5b164d9c1d5e666 |
immudb-v1.4.0-RC2-linux-amd64 | ce2cc8959dccbfc0135a39bfd7c36658c1953758927d0f5703837f630f40779c |
immudb-v1.4.0-RC2-linux-amd64-fips | 368273d2457d924cff3eb6fd3928c3f4eb2cb21fc6bfa9d89271628c7d2c8dae |
immudb-v1.4.0-RC2-linux-amd64-static | 29bfb2f2bf574973686fee95f9747f9a5029178ef3f217fd23e34b9f346d7937 |
immudb-v1.4.0-RC2-linux-arm64 | 74fef2616de7508b8fc8a776bbcd7b157369ea2c38b79535b632ff0f5345e363 |
immudb-v1.4.0-RC2-linux-s390x | 2238943a469c472a6efc4f633958c51991ff40e54136c4d7020f727bde279c0d |
immudb-v1.4.0-RC2-windows-amd64.exe | 6723269e6bde85611e2c1784d679579fc666f24a861a69726c331dd4c63c97fa |
immuclient Binaries
File | SHA256 |
---|---|
immuclient-v1.4.0-RC2-darwin-amd64 | 8330d88bb96a434470fc587a06bbd6063290240321a40420da692eef8786919c |
immuclient-v1.4.0-RC2-darwin-arm64 | 02f42f2e0c5271257d8f92e40ba4a2a93ed496ca78ecd8358bbb2b45506eddff |
immuclient-v1.4.0-RC2-freebsd-amd64 | cef95e5b58ef18684dd7934b59325dae1efe5b3f85fedcee37818aedb399b621 |
immuclient-v1.4.0-RC2-linux-amd64 | 77eb8275887dcf5a9ff41b2b67734ffda4d75c1c2661670e9edf07bc364197cf |
immuclient-v1.4.0-RC2-linux-amd64-fips | 8d68d3b17e4fc3b39be0f940ad2452f5b58f2b605f46666f036d9c6a8abdd6ca |
immuclient-v1.4.0-RC2-linux-amd64-static | 78ad86d5cebbac8a17162724... |
v1.4.0-RC1
Changelog
[v1.4.0-RC1] - 2022-10-04
Bug Fixes
- Makefile: add fips build flag to test/fips
- Makefile: remove interactive flag from dist/fips command
- ci: fix regex pattern for fips binaries
- cmd/immuadmin: set correct data-type for replication-sync-followers flag
- embedded/store: fix size calculation of precommitted txs
- embedded/store: Fix checking for closed store when syncing TXs
- embedded/store: avoid attempts to commit in wrong order
- embedded/store: expose durable precommitted state
- embedded/store: include allowPrecommitted into tx reader construction
- embedded/store: ensure tx is released upon error
- embedded/store: aht up to precommited tx
- github: Update github actions after migration of Dockerfile's
- pkg/database: return master commit state if failing to read follower precommitted one
- pkg/database: Fix mutex lock in ExportTx
- pkg/database: set follower states holder when changing replication status
- pkg/server: add logs when replicator does not start
Changes
- add dependabot config
- Add empty line between license header and package
- Dockerfile.fips: add fips build changes
- cmd/immuadmin: add new replication flags
- cmd/immuadmin: revert default replication-master-port
- cmd/immuadmin: use default immudb port as default value for replication-master-port flag
- cmd/immuclient: flag replication-sync-enabled to enable sync replication
- cmd/immudb: deprecate replication-enabled towards replication-is-replica
- docker: Move main Dockerfile's to build folder
- docker: Simplify the main Dockerfile
- embedded/store: resolve pre-committed using clogbuf
- embedded/store: wip reduce allocations in exportTx
- embedded/store: mutexless export-tx
- embedded/store: enhanced tx discarding logic
- embedded/store: wip load precommitted txs
- embedded/store: method to dynamically switch to external allowance
- embedded/store: wip wait for precommitted txs
- embedded/store: explicit allowPrecommitted and restricted access to precommitted txs
- embedded/store: minor code simplification
- embedded/store: possibility to read tx header of precommitted txs
- embedded/store: support for concurrent replicated precommits
- embedded/store: tx parsing with sanity checks
- embedded/store: handle commit case when there is nothing new to commit
- embedded/store: tolerate partial data or inconsistencies when loading pre-committed txs
- embedded/store: explanatory comments added
- embedded/store: waits for durable precommitted txs
- embedded/store: minor renaming and comment additions
- embedded/store: add integrity checks when reading precommitted txs
- pkg/api: currentState endpoint includes precommitted info
- pkg/api: explicit sync replication setting
- pkg/api/schema: reformat schema.proto file
- pkg/database: minor typo in comment
- pkg/database: sync exportTx
- pkg/database: improve error comparison
- pkg/database: follower commit progress without additional waits
- pkg/database: handle special case related to sql initialization
- pkg/database: disable automatic sql init on older databases
- pkg/integration: add synchronous replication integration tests
- pkg/replication: allowPreCommitted only with sync replication enabled
- pkg/replication: speed up follower reconnection
- pkg/replication: use session-based authentication
- pkg/replication: handling a particular case in an optimized manner
- pkg/replication: backward compatible replication
- pkg/replication: check committedTxID from master
- pkg/replication: wip optimize concurrency in replicators
- pkg/replication: handle case when follower precommit state is up-to-date but commit state is lies behind
- pkg/replication: sync replication using follower state
- pkg/replication: configurable prefetchTxBufferSize and replicationCommitConcurrency
- pkg/replication: improve error comparison
- pkg/replication: graceful closing
- pkg/replication: further progress in sync replication
- pkg/replication: replicator with backward compatibility mode
- pkg/replicator: wip precommitted tx discarding when follower diverged from master
- pkg/server: explicit sync replication
- pkg/server: handle admin user creation with sync replication enabled
- pkg/server: support for systemdb with session-based auth
- pkg/server: display all replication settings
- pkg/server: include sync replication settings in options
- pkg/server: use replication settings
Features
- cmd/immuadmin: flag to set the number of sync followers
- cmd/immudb: flag to set the number of sync followers for systemdb and defaultdb
- embedded/store: functionality to discard precommitted txs
- embedded/store: core support for sync replication
- pkg/api: api extensions to support sync replication
- pkg/database: wip sync replication logic
- pkg/replication: mode to allow tx discarding on followers
- pkg/replication: wip replicator with support for sync replication
- pkg/server: sync replication logic
- pkg/server: Add ability to inject custom database management object
Downloads
Docker image
https://hub.docker.com/r/codenotary/immudb
immudb Binaries
File | SHA256 |
---|---|
immudb-v1.4.0-RC1-darwin-amd64 | e2133e437897911b48ba4b7ec40c5a7a31b10522ce36f4f971d1964576642a59 |
immudb-v1.4.0-RC1-darwin-arm64 | a036f56e5465f5337edb56b45cff5c5ad23a65bb2d46efea536eeda43f9bc856 |
immudb-v1.4.0-RC1-freebsd-amd64 | 6eabed369b715bc6f1b5c0b3656a5b72878d664214d65ca2071e2240fbcbc235 |
immudb-v1.4.0-RC1-linux-amd64 | ac2543dc3952abc96199f40aa805ecfac335f7a76788a02e641bed111b35280c |
immudb-v1.4.0-RC1-linux-amd64-fips | a7842f83df2637118696c8c248977a465413696fa704631d2f1ab355250d307b |
immudb-v1.4.0-RC1-linux-amd64-static | bc03f2235255311fd52c1a69c99864f7db31a792a6a312c74df9991ac8f05a91 |
immudb-v1.4.0-RC1-linux-arm64 | e548ef5a4976e1925a08c6401688641af1c7da67dce2c401908e921a0d06169a |
immudb-v1.4.0-RC1-linux-s390x | 04c9b9820e79f52b757fd8ff462e9d65f785bb781a92bfd04c44c7cb2b94f07f |
immudb-v1.4.0-RC1-windows-amd64.exe | fecba3d6894bdb341de5b0e3c826ddd7cb390026b2e903935c3266d6f4beaa50 |
immuclient Binaries
File | SHA256 |
---|---|
immuclient-v1.4.0-RC1-darwin-amd64 | ae8977e1b07b923649b0cca1a20680e0501a04605daaf5c64dd9dc2b50478932 |
immuclient-v1.4.0-RC1-darwin-arm64 | ca39fd74a0818719908a7f3c46e8bb19ffc93678c953ae573d1d03b40b1a4965 |
immuclient-v1.4.0-RC1-freebsd-amd64 | c71787595d2da1ead1d6710d31a7859d2b5ef08efe7a9158c3933a1f3d1c4a60 |
immuclient-v1.4.0-RC1-linux-amd64 | 295f2457a3e271bdee1db1dc0b8349355661eeddece932c7bd22b44c132c4b88 |
immuclient-v1.4.0-RC1-linux-amd64-fips | f48de7b92695437bd3f7dc7e7ab8589b0dd4e96e4f0877c7e87770349c2d57bf |
immuclient-v1.4.0-RC1-linux-amd64-static | f3c6f4c08244e8e84bbefcb5f3e053a8612fa63c820015493bca87489773f765 |
immuclient-v1.4.0-RC1-linux-arm64 | 695f9c7f9ec5a147265b4489ae2e2282b144338a383d779037c58a8efed380fe |
immuclient-v1.4.0-RC1-linux-s390x | 4d7f0ff5eade6c0e29adf1467007481c14ed53ab8b606191244f5266683d1483 |
immuclient-v1.4.0-RC1-windows-amd64.exe | 851494f9e7b64356dce80220d41dbdd54954183b46430e77fd03779b60cd49e0 |
immuadmin Binaries
File | SHA256 |
---|---|
immuadmin-v1.4.0-RC1-darwin-amd64 | 4352e28868ac037b4e78478862a20460c88976b6d35562cea1c7e9df19d3810f |
immuadmin-v1.4.0-RC1-darwin-arm64 | 245b9644d1c74b24c612c651b644f87c182946b21877b73631513f8b8d250ac3 |
immuadmin-v1.4.0-RC1-freebsd-amd64 | 85c15624f3399570c9254e3e575fbcbdf62... |
v1.3.2
Release notes
Performance was the main focus of this immudb release. The way durability guarantees were implemented until now i.e. fsync was called synchronously as the final commit step, resulted in a lot of overhead for each transaction.
A significant improvement in write performance (up to x10 faster compared to previous immudb release v1.3.1) was achieved by grouping transactions in the last step of the commit process. The gains are greatest when there are fewer key-value entries per transaction and multiple writers are simultaneously working. The cost of the sync operation pays for itself as the number of key-value pairs in each transaction increases, although some noticeable speed can still be achieved (up to x2 compared to previous immudb release v1.3.1).
Read performance was also significantly improved due to the introduction of reusable pools of objects, which reduced allocations needed during query resolution. The gains are quite significant in both single and multi-get operations.
Benchmarking
Stay tuned, benchmarks done using stresser2
tool (https://github.com/codenotary/immudb-tools) will be available soon, we're still collecting some results.
JSON Logging
Logs can also be generated in json format for easier ingestion by logging platforms.
It's quite simple to enable this useful feature, just run immudb with the logformat
flag set to json
e.g. ./immudb --logformat=json
Go 1.18
immudb binaries and Docker images are now built with Go 1.18.
Changelog
[v1.3.2] - 2022-08-25
Bug Fixes
- access tls value in global scope within ingress annotations
- company name in webconsole and other files
- build: Fix go-acc and goveralls invocations
- build: update go version to 1.18 in Dockerfiles
- build/RELEASING.md: Add note about updating playground
- embedded: use tmp folder for unit test cases
- embedded/sql: Support single
BEGIN
statement. - embedded/store: Check precommitted state when replicating
- embedded/store: Optionally preallocate Tx pools
- embedded/store: Ensure ordering of transaction timestamps
- embedded/store: Assign blTxID within locked tx state
- embedded/store: ensure tx is released upon error
- embedded/store: Improved check for replicated transaction
- embedded/store: Return correct error on key length exceeded
- embedded/store: Protect against simultaneous replicators
- embedded/store: Reduce the amount of allocations for tx object
- embedded/tools/stress_tool: Fix compilation after recent update to tx holder pool
- getRandomTable: increase RNG range for table generation
- github: Remove unnecessary
/test/
path when uploading perf results to s3 - github: Do not use yaml anchors in github workflows
- pkg/client: Invalid client state after connection refused
- pkg/client/clienttest: enforce mock client to interface
- pkg/database: Fix calculation of proof for VerifiableTxByID
- pkg/database: Correct revision for Scan requirests
- server: Show info text with a logger
- servertest: Allow accessing Server object before starting the server
- stdlib/rows: add colums to row response
- test/performance: Cleanup test directory
Changes
- pin google.golang.org/protobuf to v1.27.1 (currently used version for generated code).
- Introduce separate TxHolder pools
- update github.com/spf13/viper to v1.12.0.
- makefile formatting.
- update build constraint to new & future-proof syntax.
- format tools.go.
- deprecate ImmuClient.HealthCheck in favour of ServerInfo.
- reimplement ImmuClient.HealthCheck using rpc ServerInfo instead of (deprecated) Health.
- refactor TestServerInfo.
- Update main go versin to 1.18
- generate gRPC stubs.
- ignore schema_grpc.pb.go in coveralls.
- use go.mod version of github.com/grpc-ecosystem/grpc-gateway when building codegen.
- regenerate with correct version of protoc-gen-go.
- ignore schema_grpc.pb.go in code coverage.
- pin github.com/pseudomuto/protoc-gen-doc to 1.4.1 (currently used version for generated code).
- Makefile: Update webconsole to 1.0.16
- build: Update RELEASING.md doc
- build: Improve generation of build checksums
- cmd/immuadmin: Add support for max-commit-concurrency option
- cmd/immuadmin: Add support for read-tx-pool-size option
- cmd/immudb: Add support for max-sessions command line option
- database/sql: Delay txholder allocation on VerifiableSQLGet
- embedded/ahtree: threshold-based sync
- embedded/ahtree: use bigger default write buffer size
- embedded/ahtree: improve error handling
- embedded/ahtree: flushless append
- embedded/ahtree: improve validations and error handling
- embedded/ahtree: support newst appendable implementation
- embedded/ahtree: improve error message consistency
- embedded/ahtree: minor error message change
- embedded/appendable: autosync when write buffer is full
- embedded/appendable: autosync support in multi-appendable
- embedded/appendable: flush when no more writes are done in appendable
- embedded/appendable: improve explanatory comment inside sync method
- embedded/appendable: improve singleapp validation and error handling
- embedded/appendable: error tolerant seek
- embedded/appendable: improve validations and error handling
- embedded/appendable: inmem buffer offset
- embedded/appendable: wip remoteapp validation
- embedded/appendable: return io.EOF when offset is out of range
- embedded/appendable: upgrade mocked and remote appendable based on new flushing assumptions
- embedded/appendable: auto-sync options
- embedded/appendable: multi-appendable shared write buffer
- embedded/htree: improve error handling
- embedded/sql: Remove unnecessary tx holder buffer from SQLTx
- embedded/store: Better errors returned during replication error
- embedded/store: aht options
- embedded/store: Use dedicated error for replication conflicts
- embedded/store: sync AHT before tx commit log
- embedded/store: in-mem clog buffer written when synced
- embedded/store: wrap internal already closed errors
- embedded/store: handle appendable already close error
- embedded/store: Optimize ReadTxHeader method
- embedded/store: Do not write values if concurrency limit is reached
- embedded/store: Add dedicated error for tx pool exhaustion
- embedded/store: add TODO comment
- embedded/store: parametrize write buffer size
- embedded/store: wip retryable sync
- embedded/store: flush-less precommit
- embedded/store: multi-tx syncs
- embedded/store: use smaller default buffer size
- embedded/store: Add txDataReader to process transaction data
- embedded/store: avoid sync waiting if there are no new transactions
- embedded/store: improve error comparison with errors.Is(...)
- embedded/store: wip error declaration
- embedded/store: Add explicit ReadTxEntry method
- embedded/store: Add explicit ReadTxHeader
- embedded/store: Optimize ReadTxEntry method
- embedded/store: Add txPoolOptions to setup pool parameters upon creation
- embedded/store: set new default write buffer values
- embedded/store/txpool: Allocate pool entries separately
- embedded/store/txpool: Make txPoolOptions members private
- embedded/tbtree: improve error handling
- embedded/tbtree: use non-retryable sync
- embedded/tbtree: define using generic errors towards errors.Is(...) usage
- embedded/watchers: improve error handling
- github: Update ACTIONS_SECRETS.md file
- github: Allow selection of runner to run perf test
- github: Run perf test suite on pull requests
- github: Run performance test suite on push to master
- github: Add simple documentation of
PERF_TEST_xxx
secrets - github: Install qemu using docker/setup-qemu-action
- github: Allow using multiple runners for perf test suite
- github: Upload perf results to AWS s3
- pkg/api: Add tx pool size to GRPC and stored db options
- pkg/api: milliseconds message type
- pkg/api: expose aht settings
- pkg/api: export syncFrequency database parameter
- pkg/api: deprecate rpc Health in favour of ServerInfo.
- pkg/database: Add tx pool size to db options
- pkg/database: Remove txHolder from get operation
- pkg/database: Do not allocate txholder for history scans
- pkg/database: allocate tx buffer before doing verified writes
- pkg/logger: Add memory logger
- pkg/logger: add json logger
- pkg/server: simplify ImmuServer.Health.
- pkg/server: Add pprof option
- test/performance: Add basic flags to the benchmark process
- test/performance: Add separate
Write KV/s
test. - test/performance: Split benchmark list and run code
- test/performance: Move test seed out of configuration
- test/performance: Move random generator and key tracker to common coode
- test/performance: Add CPU time / memory stats gathering
- test/performance: Allow customized name for the benchmark
- test/performance: Add basic IO stats
- test/performance: Improve live IO display
- test/performance: Better logging and output
- test/performance: Correctly close random data generator
Features
- revert usages of ServerInfo that would break backwards compatibility.
- add test for HealthCheck.
- cmd/immuadmin: expose syncFrequency and WriteBufferSize db parameters
- cmd/immuclient: add info command to immuclient.
- pkg/api: expose write buffer parameter
- pkg/api: improve documentation of ServerInfo.
- pkg/api: remove ServerInfoResponse.status field.
- pkg/api: add ServerInfo rpc to deprecate Health.
- pkg/client: revert WaitForHealthCheck change to...
v1.3.2-RC1
Changelog
[v1.3.2-RC1] - 2022-08-24
Bug Fixes
- access tls value in global scope within ingress annotations
- company name in webconsole and other files
- build: Fix go-acc and goveralls invocations
- build: update go version to 1.18 in Dockerfiles
- build/RELEASING.md: Add note about updating playground
- embedded: use tmp folder for unit test cases
- embedded/sql: Support single
BEGIN
statement. - embedded/store: Check precommitted state when replicating
- embedded/store: Optionally preallocate Tx pools
- embedded/store: Ensure ordering of transaction timestamps
- embedded/store: Assign blTxID within locked tx state
- embedded/store: ensure tx is released upon error
- embedded/store: Improved check for replicated transaction
- embedded/store: Return correct error on key length exceeded
- embedded/store: Protect against simultaneous replicators
- embedded/store: Reduce the amount of allocations for tx object
- embedded/tools/stress_tool: Fix compilation after recent update to tx holder pool
- getRandomTable: increase RNG range for table generation
- github: Remove unnecessary
/test/
path when uploading perf results to s3 - github: Do not use yaml anchors in github workflows
- pkg/client: Invalid client state after connection refused
- pkg/client/clienttest: enforce mock client to interface
- pkg/database: Fix calculation of proof for VerifiableTxByID
- pkg/database: Correct revision for Scan requirests
- server: Show info text with a logger
- servertest: Allow accessing Server object before starting the server
- stdlib/rows: add colums to row response
- test/performance: Cleanup test directory
Changes
- pin google.golang.org/protobuf to v1.27.1 (currently used version for generated code).
- Introduce separate TxHolder pools
- update github.com/spf13/viper to v1.12.0.
- makefile formatting.
- update build constraint to new & future-proof syntax.
- format tools.go.
- deprecate ImmuClient.HealthCheck in favour of ServerInfo.
- reimplement ImmuClient.HealthCheck using rpc ServerInfo instead of (deprecated) Health.
- refactor TestServerInfo.
- Update main go versin to 1.18
- generate gRPC stubs.
- ignore schema_grpc.pb.go in coveralls.
- use go.mod version of github.com/grpc-ecosystem/grpc-gateway when building codegen.
- regenerate with correct version of protoc-gen-go.
- ignore schema_grpc.pb.go in code coverage.
- pin github.com/pseudomuto/protoc-gen-doc to 1.4.1 (currently used version for generated code).
- Makefile: Update webconsole to 1.0.16
- build: Update RELEASING.md doc
- build: Improve generation of build checksums
- cmd/immuadmin: Add support for max-commit-concurrency option
- cmd/immuadmin: Add support for read-tx-pool-size option
- cmd/immudb: Add support for max-sessions command line option
- database/sql: Delay txholder allocation on VerifiableSQLGet
- embedded/ahtree: threshold-based sync
- embedded/ahtree: use bigger default write buffer size
- embedded/ahtree: improve error handling
- embedded/ahtree: flushless append
- embedded/ahtree: improve validations and error handling
- embedded/ahtree: support newst appendable implementation
- embedded/ahtree: improve error message consistency
- embedded/ahtree: minor error message change
- embedded/appendable: autosync when write buffer is full
- embedded/appendable: autosync support in multi-appendable
- embedded/appendable: flush when no more writes are done in appendable
- embedded/appendable: improve explanatory comment inside sync method
- embedded/appendable: improve singleapp validation and error handling
- embedded/appendable: error tolerant seek
- embedded/appendable: improve validations and error handling
- embedded/appendable: inmem buffer offset
- embedded/appendable: wip remoteapp validation
- embedded/appendable: return io.EOF when offset is out of range
- embedded/appendable: upgrade mocked and remote appendable based on new flushing assumptions
- embedded/appendable: auto-sync options
- embedded/appendable: multi-appendable shared write buffer
- embedded/htree: improve error handling
- embedded/sql: Remove unnecessary tx holder buffer from SQLTx
- embedded/store: Better errors returned during replication error
- embedded/store: aht options
- embedded/store: Use dedicated error for replication conflicts
- embedded/store: sync AHT before tx commit log
- embedded/store: in-mem clog buffer written when synced
- embedded/store: wrap internal already closed errors
- embedded/store: handle appendable already close error
- embedded/store: Optimize ReadTxHeader method
- embedded/store: Do not write values if concurrency limit is reached
- embedded/store: Add dedicated error for tx pool exhaustion
- embedded/store: add TODO comment
- embedded/store: parametrize write buffer size
- embedded/store: wip retryable sync
- embedded/store: flush-less precommit
- embedded/store: multi-tx syncs
- embedded/store: use smaller default buffer size
- embedded/store: Add txDataReader to process transaction data
- embedded/store: avoid sync waiting if there are no new transactions
- embedded/store: improve error comparison with errors.Is(...)
- embedded/store: wip error declaration
- embedded/store: Add explicit ReadTxEntry method
- embedded/store: Add explicit ReadTxHeader
- embedded/store: Optimize ReadTxEntry method
- embedded/store: Add txPoolOptions to setup pool parameters upon creation
- embedded/store: set new default write buffer values
- embedded/store/txpool: Allocate pool entries separately
- embedded/store/txpool: Make txPoolOptions members private
- embedded/tbtree: improve error handling
- embedded/tbtree: use non-retryable sync
- embedded/tbtree: define using generic errors towards errors.Is(...) usage
- embedded/watchers: improve error handling
- github: Update ACTIONS_SECRETS.md file
- github: Allow selection of runner to run perf test
- github: Run perf test suite on pull requests
- github: Run performance test suite on push to master
- github: Add simple documentation of
PERF_TEST_xxx
secrets - github: Install qemu using docker/setup-qemu-action
- github: Allow using multiple runners for perf test suite
- github: Upload perf results to AWS s3
- pkg/api: Add tx pool size to GRPC and stored db options
- pkg/api: milliseconds message type
- pkg/api: expose aht settings
- pkg/api: export syncFrequency database parameter
- pkg/api: deprecate rpc Health in favour of ServerInfo.
- pkg/database: Add tx pool size to db options
- pkg/database: Remove txHolder from get operation
- pkg/database: Do not allocate txholder for history scans
- pkg/database: allocate tx buffer before doing verified writes
- pkg/logger: Add memory logger
- pkg/logger: add json logger
- pkg/server: simplify ImmuServer.Health.
- pkg/server: Add pprof option
- test/performance: Add basic flags to the benchmark process
- test/performance: Add separate
Write KV/s
test. - test/performance: Split benchmark list and run code
- test/performance: Move test seed out of configuration
- test/performance: Move random generator and key tracker to common coode
- test/performance: Add CPU time / memory stats gathering
- test/performance: Allow customized name for the benchmark
- test/performance: Add basic IO stats
- test/performance: Improve live IO display
- test/performance: Better logging and output
- test/performance: Correctly close random data generator
Features
- revert usages of ServerInfo that would break backwards compatibility.
- add test for HealthCheck.
- cmd/immuadmin: expose syncFrequency and WriteBufferSize db parameters
- cmd/immuclient: add info command to immuclient.
- pkg/api: expose write buffer parameter
- pkg/api: improve documentation of ServerInfo.
- pkg/api: remove ServerInfoResponse.status field.
- pkg/api: add ServerInfo rpc to deprecate Health.
- pkg/client: revert WaitForHealthCheck change to maintain backwards-compatibility.
- pkg/client: implement ImmuClient.ServerInfo.
- pkg/server: implement ImmuServer.ServerInfo.
Downloads
Docker image
https://hub.docker.com/r/codenotary/immudb
immudb Binaries
File | SHA256 |
---|---|
immudb-v1.3.2-RC1-darwin-amd64 | 9c8373eb161e27f1e3e887725167bb58c37b9e395b102e50ba52efff1cf1a5f9 |
immudb-v1.3.2-RC1-darwin-arm64 | 5017bc5a24776d4f952a53cabe12efe0f9f90fb23fc21fe7f9cd7d6feabfe76e |
immudb-v1.3.2-RC1-freebsd-amd64 | 5925e6ea56bc070904ca1755aba8889e84b4baf225376b22126594fcfd1000b3 |
immudb-v1.3.2-RC1-linux-amd64 | 832fd0bbe3ce1d83dca47b814cecdf9161f63362d0e7c1c8601d5bb30eb56101 |
immudb-v1.3.2-RC1-linux-amd64-static | 8eb21972c3d89a7e365da23d254a2fa62bc09b2ef3d1a1b9d44113306129f4cf |
immudb-v1.3.2-RC1-linux-arm64 | cb8e63b556b59dbeac822a5f3d190077a68bacfce46fe166256767e7eced0e79 |
[immudb-v1.3.2-RC1-linux-... |