Releases: codenotary/immudb
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-... |
v1.3.1
Release notes
Let us introduce another immudb release: 1.3.1. This time we focused mostly on stability and bug fixing, however some small features still managed to slip through into our changelog.
Reworked documentation structure
The documentation hosted on https://docs.immudb.io/ gained a brand new menu structure making it much cleaner for newcomers and much easier to navigate by more experienced immudb users. Make sure to check it out and remember that your feedback here is always very welcome.
S3 compatibility
One of the most important issues we've started observing was the incompatibility with various S3 storage implementations. Based on our internal tests and community feedback we managed to greatly improve support 3rd party S3 service providers such as elest.io.
SQL Snapshot leak fixes
When performing read operations on immudb, an internal snapshot of B-tree is created. We found few places (mostly in case of query errors) that would result in snapshots not being freed once the SQL operation is finished. Immudb has internal limit of active open snapshots at a time thus such leaked snapshots were causing significant issues during application development.
Idempotent NOW() function
The NOW()
function available in SQL is now idempotent within a single transaction. Before it was returning the exact time when the NOW()
function was called. The new implementation guarantees that it always returns the time when the current transaction was started.
Experimental support for OFFSET
The new OFFSET
keyword can be used in SQL statements to instruct the server that it should skip some initial set of entries. Similarly, the GRPC methods for scanning KV entries got additional offset
parameter. Internally offsets are implemented by skipping initial entries from the result on the server side thus it may come with performance penalty when the value of such offset is large.
Changelog
[v1.3.1] - 2022-06-30
Bug Fixes
- embedded/store: filter evaluation after valRef resolution
- README: Update readme to show examples for 1.3.0 version
- cmd/immuadmin: use StreamChunkSize as max chunk size during tx replication
- cmd/immudb: include metrics endpoint related flags
- embedded/remotestorage: Fix invalid comment
- embedded/remotestorage/s3: Correctly url decode entry names
- embedded/remotestorage/s3: Simplify the code for scan
- embedded/remotestorage/s3: Avoid using HEAD requests
- embedded/remotestorage/s3: Fix s3 object name validation
- embedded/sql: Use defer to cleanup unclosed readers on error
- embedded/sql: Fix snapshot leak on query initialization failure
- embedded/sql: Properly close readers in joint row reader
- embedded/sql: Fix reader leaks during initialization failures
- embedded/sql: Fix snapshot leaks in union readers
- embedded/sql: ensure timestamp is evaluated with microsecond precision
- pkg/client: ensure connection is closed and session can be re-established
- pkg/database: Do not panic if incorrect number of pk values is given to VerifiableSQLGet
- pkg/server: Fix remote storage test after recent changes
- pkg/server/sessions: Avoid deadlock when closing session manager
- pkg/server/sessions: Session manager test fixes
- pkg/server/sessions: Handle short buffer read when generating session id
- pkg/server/sessions: Correctly start session guard
- pkg/server/sessions: Use strong random source for session ID
Changes
- embedded/store: offset handling at keyreader
- Update dependencies
- build: Update RELEASING.md file
- embedded/remotestorage: Improve error reporting
- embedded/remotestorage: More detailed errors
- embedded/remotestorage: Improve testing of remotestorage
- embedded/remotestorage/s3: Improved s3 object name checks
- embedded/sql: Do not return error from conditional and limit readers
- embedded/sql: fixed-timed tx
- github: Update push action
- github: Run tests with minio service
- github: On macOS run client only test on pull requests
- github: Run coverage tests with minio enabled
- github: Update minimal supported go version to 1.15
- pkg/client: Better detection of tests that require external immudb
- pkg/server: Add missing copyright headers
- pkg/server/session: Move options normalization into options struct
- pkg/server/sessions: Improve options handling
- pkg/server/sessions: Add MaxSessions option
- pkg/server/sessions: Simplify session handling code
- remotestorage: Add prometheus metrics for remote storage kind
- tools: Remove old stream tool
Features
- embedded/sql: offset clause
- embedded/store: offset in key scanning
- pkg/api: offset attribute in scan and zscan endpoints
Downloads
Docker image
https://hub.docker.com/r/codenotary/immudb
Immudb Binaries
File | SHA256 |
---|---|
immudb-v1.3.1-darwin-amd64 | be0c602551f801e3971360a6146d7d3edfd5d226381b95e5e1411c04f6662bfe |
immudb-v1.3.1-darwin-arm64 | c3c60ad8842f27765480c0ff21ed948e827f912fe75f97ac99a21b99116cd490 |
immudb-v1.3.1-freebsd-amd64 | 447021f9bc00b1ad08fd5f76550bc6240f18a762164178b8afa9197e6254df85 |
immudb-v1.3.1-linux-amd64 | 731d8de18e3d32e102a8aad70fd47234b46b2da0c5d8e04d33032af7624f37a5 |
immudb-v1.3.1-linux-amd64-static | b0e22d11bfe3c1c4d05e37c22f30f1dc4072320e6b70f6db76f21a485d789075 |
immudb-v1.3.1-linux-arm64 | 8da9ca4bdb478eee408f5a37d8af9ab56e0f468476e959051cfdbf1cedd905ae |
immudb-v1.3.1-linux-s390x | 14e6ade9a657b333de52010ae4fcd714a2e48e9f38aecd965a22f6349814758e |
immudb-v1.3.1-windows-amd64.exe | 1396d0c61d215bcdbf43605808a5a81f419689f0e626a2f5b1b456e8dcc302e4 |
Immuclient Binaries
File | SHA256 |
---|---|
immuclient-v1.3.1-darwin-amd64 | ce167f3b4569ab5fb4872120281211f9febf442a9443c03ddded38c8f14a62ac |
immuclient-v1.3.1-darwin-arm64 | 16790e1ca4789c8bbb1ace95501915c17f1713e4e2d6d3a7d532054042ebdfe4 |
immuclient-v1.3.1-freebsd-amd64 | e2f5d6c8e46ade303383c9a8d4094cc4fea0e3b7120bd6eac3ee135a5c5f45fe |
immuclient-v1.3.1-linux-amd64 | 015aa7eb91fc011562db27a2b0172cf64f318dbf21e7588fedef43e5f62d1ee4 |
immuclient-v1.3.1-linux-amd64-static | 526f942a711ccf644b402d7ad3599a32f00bbbd826bbc046cc2720aa61fc3686 |
immuclient-v1.3.1-linux-arm64 | 71314a0528df3d692f8789ade535f19db7e25319e377d8d0c32236dac4e6b4bf |
immuclient-v1.3.1-linux-s390x | 3d24102b76572931e91b1b06d35ae355cbc4c57fe669972096d0377f782f1fa4 |
immuclient-v1.3.1-windows-amd64.exe | 233cb79db6c4317860138848aeb41fe5cb6ad2adaceeccc0e5ec4e0e8c17874c |
Immuadmin Binaries
File | SHA256 |
---|---|
immuadmin-v1.3.1-darwin-amd64 | a62b8942bb7fa9bde7b4905869ccf451ddd28ec477e1ad5d920a39f59afedff1 |
immuadmin-v1.3.1-darwin-arm64 | ad3025ce49baec3008379648d760a2b2f93811a7f460132cfcd9ef5634a39ab0 |
immuadmin-v1.3.1-freebsd-amd64 | bf935f03102eca534e466e3329f0434443bb41940b6590525a4d7796967ba2d1 |
immuadmin-v1.3.1-linux-amd64 | 3c5e343b408ff9600004022d02900b63e89bb888677ad843ec47cca7713bc431 |
immuadmin-v1.3.1-linux-amd64-static | 135648491f5bc60c38733c270f0c448734f7406280da0aeadd60f4a71d3fb3e7 |
immuadmin-v1.3.1-linux-arm64 | 8c158fe6097a481276b71bec1777185e57f43fd6f16fd79cb78f9fe0ef397297 |
immuadmin-v1.3.1-linux-s390x | 855f792bdc594551bf2e044e52b38f60fddc831684e2e5a5213138ec441952a4 |
immuadmin-v1.3.1-windows-amd64.exe | 078e0f8b4d6cf4eca79e44a9df1b9b9869da22f24cb57d1f024f17d0bed08805 |