Skip to content

Releases: codenotary/immudb

v1.5.0

21 Jun 16:19
6103e9a
Compare
Choose a tag to compare

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...
Read more

v1.5.0-RC1

16 Jun 16:30
24cce79
Compare
Choose a tag to compare
v1.5.0-RC1 Pre-release
Pre-release

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
  • ...
Read more

v1.4.1

21 Nov 15:51
@byo byo
Compare
Choose a tag to compare

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

16 Nov 12:38
@byo byo
Compare
Choose a tag to compare
v1.4.1-RC1 Pre-release
Pre-release

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

12 Oct 15:01
@byo byo
Compare
Choose a tag to compare

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...
  1. Some SDKs updates will be released a few days after the immudb release.

Read more

v1.4.0-RC2

10 Oct 13:34
@byo byo
Compare
Choose a tag to compare
v1.4.0-RC2 Pre-release
Pre-release

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...
Read more

v1.4.0-RC1

04 Oct 14:14
@byo byo
Compare
Choose a tag to compare
v1.4.0-RC1 Pre-release
Pre-release

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...
Read more

v1.3.2

25 Aug 18:09
80fa08f
Compare
Choose a tag to compare

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...
Read more

v1.3.2-RC1

24 Aug 23:39
b996eae
Compare
Choose a tag to compare
v1.3.2-RC1 Pre-release
Pre-release

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-...
Read more

v1.3.1

30 Jun 15:24
@byo byo
Compare
Choose a tag to compare

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