Go Proxy Client Library Release Notes
-
Release Date: November 29, 2024
Bug Fixes
- [CLIENT-3196] Parse
nil
keys properly in scan/query operations.
-
Release Date: November 1, 2024
Bug Fixes
- [CLIENT-3156] Fix an issue where rack policy always returns the master node. Resolves #455
-
Release Date: September 23, 2024
- Minor Improvement release.
Improvements
- [CLIENT-3112] Correctly handle new error messages/error codes returned by AS 7.2.
- [CLIENT-3102] Add "XDR key busy" error code 32.
- [CLIENT-3119] Use generics for a general code clean up.
- Uses several new generic containers to simplify concurrent access in the client.
- Uses a Guard as a monitor for the tend connection. This encapsulates synchronized tend connection management using said Guard.
- Add documentation about client.WarmUp to the client initialization API.
Bug Fixes
- [CLIENT-3082] BatchGet with empty keys raises gRPC EOF error.
- [CLIENT-3122] Fix nil dereference in the tend logic.
-
Release Date: July 22, 2024
Improvements
- [CLIENT-3045] Move proxy client build behind a build flag. This removes the GRPC compilation and potential namespace conflict from the default build and moves it behind the compiler build flag "as_proxy".
- [CLIENT-3049] Use a specialized pool for GRPC connections to prevent premature reaping.
Bug Fixes
- [CLIENT-3022] Close() throws a nil pointer error on ProxyClient without Authentication.
- [CLIENT-3044] Circular reference in between Client<->Cluster causes memory leak when the client is not closed manually.
- [CLIENT-3046] Wrong return type in Single Key Batch Operations with Multiple Ops per Bin.
- [CLIENT-3047] Fix pointer value assignment in baseMultiCommand.parseKey #443.
- [CLIENT-3048] Use precomputed ops variable in batchIndexCommandGet.executeSingle #442.
-
Release Date: July 1, 2024
- Minor feature and fix release.
New Features
- [CLIENT-2968] Support new v7.1 proxy features:
- Info command.
- QueryPolicy.QueryDuration
- [CLIENT-3012] Support new server 7.1 info command error response strings.
Improvements
- [CLIENT-2997] Scans should work in a mixed cluster of v5.7 and v6.4 server nodes.
- [CLIENT-3012] Support new server 7.1 info command error response strings.
- [CLIENT-3020] Change ReadModeSC doc from server to client perspective.
Bug Fixes
- [CLIENT-3019] Prevent Goroutine leak in AuthInterceptor for the Proxy Client.
-
Release Date: May 20, 2024
Improvements
- Add code coverage tests to the Github Actions workflow.
- Call the CancelFunc for the context.WithTimeout per linter suggestions in gRPC calls.
- Minor clean up and remove dead code.
Bug Fixes
- [CLIENT-2943] Client.BatchGetOperate does not consider ops in single key transforms.
- [CLIENT-2805] Client dev tests failing with new server map key restrictions.
- Fix as_performance and app_engine build tags.
-
Release Date: May 8, 2024
New Features
- [CLIENT-2238] Convert batch calls with just one key per node in sub-batches to batch requests.
- If the number keys for a sub-batch to a node is equal to 1, the client will use a direct operation command instead of batch commands to reduce the load on the server.
- [CLIENT-2274] Use constant sized connection buffers and resize the connection buffers over time.
- The client would use a single buffer on the connection and would grow it per demand in case it needed a bigger buffer, but would not shrink it. This helped with avoiding using buffer pools and the associated synchronization, but resulted in excessive memory use in case there were a few large records in the results, even if they were infrequent.
- This changeset does the following:
- Will use a memory pool for large records only. Large records are defined as records bigger than aerospike.PoolCutOffBufferSize. This is a tiered pool with different buffer sizes. The pool uses sync.Pool under the cover, releasing unused buffers back to the runtime.
- By using bigger aerospike.DefaultBufferSize values, the user can imitate the old behavior, so no memory pool is used most of the time.
- Setting aerospike.MinBufferSize will prevent the pool using buffer sizes too small, having to grow them frequently.
- Buffers are resized every 5 seconds to the median size of buffers used over the previous period, within the above limits.
- This change should result in much lower memory use by the client.
- [CLIENT-2702] Support Client Transaction Metrics. The native client can now track transaction latencies using histograms. Enable using the Client.EnableMetrics API.
Improvements
- [CLIENT-2862] Use default batch policies when the record level batch policy is nil.
- [CLIENT-2889] Increase grpc MaxRecvMsgSize to handle big records for the proxy client.
- [CLIENT-2891] Export various batch operation struct fields. Resolves #247.
- Remove dependency on xrand sub-package since the native API is fast enough.
- Linter Clean up.
- WritePolicy.SendKey documentation, thanks to Rishabh Sairawat
- Replaced the deprecated ioutil.ReadFile with os.ReadFile. PR #430, thanks to Swarit Pandey
Bug Fixes
- [CLIENT-2905] Fix inconsistency of handling in-doubt flag in errors.
- [CLIENT-2890] Support []MapPair return in reflection.
- This fix supports unmarshalling ordered maps into map[K]V and []MapPair in the structs.
-
Release Date: April 10, 2024
- This release updates the dependencies to mitigate security issues.
Bug Fixes
- [CLIENT-2869] - Update modules. Fix Allocation of Resources Without Limits or Throttling for golang.org/x/net/http2.
-
Release Date: March 28, 2024
New Features
- [CLIENT-2766] - Support RawBlobValue in the Go client.
- [CLIENT-2767] - Support Persistent List Indexes.
- [CLIENT-2823] - Support QueryDuration.
- [CLIENT-2831] - Support ReadPolicy.ReadTouchTTLPercent.
- [CLIENT-2240] - Add more client statistics.
- Adds the following statistics:
- circuit-breaker-hits: Number of times circuit breaker was hit.
- connections-error-other: Connection errors other than timeouts.
- connections-error-timeout: Connection Timeout errors.
- connections-idle-dropped: The connection was idle and dropped.
- connections-pool-overflow: The command offered the connection to the pool, but the pool was full and the connection was closed.
- exceeded-max-retries: Number of transactions where exceeded maximum number of retries specified in the policy.
- exceeded-total-timeout: Number of transactions that exceeded the specified total timeout.
- total-nodes: Total number of nodes in the cluster.
- Export private fields in PartitionStatus and add Recordset.BVal.
Improvements
- [CLIENT-2784] - Do not use batch repeat flag on batch writes when policy.SendKey is set to true.
- [CLIENT-2442] - Document that Only string, integer, bytes are allowed as map key types; Policy.SendKey clarification.
- Reduce the required Go version to 1.20 to support EL9; Update the dependencies.
- Update ExpCond() doc to say that all action expressions must return the same type.
Bug Fixes
- [CLIENT-2811] - RespondPerEachOp does not work for list operation. To allow backwards compatibility, this change will change the default value of RespondPerEachOp to true.
- [CLIENT-2818] - Fix return type for ExpListRemoveByValueRange.
- Update the proto gRPC files to resolve namespace issues.
- Improve the tests for BatchOperations to run on Github Actions.
- Fix tests that relied on the server nsup-period setting to be larger than zero.
- Fix Truncate test on slow servers.
-
Release Date: January 25, 2024
New Features
- Add TaskId() to ExecuteTask.
- [CLIENT-2721] - Make PartitionFilter.Retry public.
Improvements
- Clean up documentation and remove dependency of examples to the v6 version of the client.
Bug Fixes
- [CLIENT-2725] - QueryExecute (background query) does not work without operations.
- [CLIENT-2726] - Proxy does not handle invalid filter expression error in query.
- [CLIENT-2727] - Go proxy: Query Pagination never complete.
- [CLIENT-2728] - Fix an issue where Bin names were ignored if a FilterExpression was passed to the Query.
- [CLIENT-2732] - Go proxy: Not able to multiple query calls with the same statement.
- [CLIENT-2759] - Go proxy: Background query with Expression does not filter records.
-
Release Date: December 14, 2023
- CAUTION
- This is a breaking release. It is required to allow upgrading your programs to the Aerospike Server v7. This program upgrade process required as a prerequisite to upgrading your cluster, otherwise seemless cluster upgrade will not be possible. The changes and their rationale are documented in the following section.
Breaking Changes
New Features
- [CLIENT-2712] [CLIENT-2710] - Support read replica policy in scan/query.
- This includes
PREFER_RACK
which allows scan/query to be directed at local rack nodes when possible.
- [CLIENT-2434] - Use 'sindex-exists' command in
DropIndexTask
.
- [CLIENT-2573] - Support
ExpRecordSize()
.
- [CLIENT-2588] - SINDEX Support for 'Blob' Type Elements.
Improvements
- [CLIENT-2694] - Use RawURLEncoding instead of RawStdEncoding in proxy authenticator.
- [CLIENT-2616] - Update dependencies to the latest, require Go 1.21.
- Remove HyperLogLog tests from the Github Actions suite.
- Remove Go v1.18-v1.20 from the Github Actions Matrix.
- Rename grpc proto definition files due to compiler limitations. Resolves #414
Bug Fixes
- [CLIENT-2318] - Fixes an issue where Expression in
BatchPolicy
takes precedence rather than BatchDeletePolicy
in BatchDelete
.
-
Release Date: April 10, 2024
- This release updates the dependencies to mitigate security issues.
- Debian 9 Stretch LTS has reached its End of Life on June 30 2022. We will drop support for Debian 9 in an upcoming client release.
Bug Fixes
- [CLIENT-2869] - Update modules. Fix Allocation of Resources Without Limits or Throttling for golang.org/x/net/http2.
-
Release Date: January 25, 2024
- Backport fix release.
- Debian 9 Stretch LTS has reached its End of Life on June 30 2022. We will drop support for Debian 9 in an upcoming client release.
New Features
- [CLIENT-2712], [CLIENT-2710] - Support read replica policy in scan/query.
- This includes PREFER_RACK which allows scan/query to be directed at local rack nodes when possible.
Improvements
- Format all the code in the repository.
Bug Fixes
- [CLIENT-2759] - Go proxy: Background query with Expression does not filter records.
- The filter expressions of wither policies will be used.
- Priority is with the Query Policy for backwards compatibility.
- [CLIENT-2616] - Update more dependencies to the latest.
- [CLIENT-2618] - Support persistent map indexes.
- [CLIENT-2726] - Proxy does not handle invalid filter expression error in query.
- [CLIENT-2725] - QueryExecute (background query) does not work without operations.
- [CLIENT-2727] - Go proxy: Query Pagination never complete.
- [CLIENT-2732] - Go proxy: Not able to multiple query calls with the same statement.
- [CLIENT-2728] - Fix an issue where Bin names were ignored if a FilterExpression was passed to the Query.
- [CLIENT-2318] - Expression in BatchPolicy takes precedence rather than BatchDeletePolicy.
- [CLIENT-2434] - Use 'sindex-exists' command in DropIndexTask.
- [CLIENT-2694] - Use RawURLEncoding instead of RawStdEncoding in proxy authenticator.
- Rename GRPC proto definition files due to compiler limitations. Resolves #414
-
Release Date: November 1, 2023
- Major feature release.
- Debian 9 Stretch LTS has reached its End of Life on June 30 2022. We will drop support for Debian 9 in an upcoming client release.
New Features
- Adds support for the Aerospike Proxy Server and DBaaS service.
-
Release Date: August 23, 2023
- Major feature release.
- Debian 9 Stretch LTS has reached its End of Life on June 30 2022. We will drop support for Debian 9 in an upcoming client release.
New Features
- Adds support for the Aerospike Proxy Server and DBaaS service.