Releases: oracle/coherence-go-client
Coherence Go Client - v2.0.0-rc3
Introduction
This is release v2.0.0-rc3 of the Coherence Go Client, an API for accessing Coherence via a native Go client.
Note: this is a release candidate only and functionality may be changes before the official
v2.0.0
release.
Requirements
- Coherence CE 22.06.4+, 24.03+, or Coherence 14.1.1.2206.4+ Commercial edition with a configured gRPCProxy. (Always ensure you are using the latest Coherence available patch.)
- Go 1.19.+
Updates / New Features
Since v2.0.0-rc2
- Optimize the near cache expiry logic. This change means the minimum time to set TTL for is 1/4 second to be on parity with other clients
Other Update
- Added support for new internal gRPC v1 API in CE 24.09 and commercial 14.1.2 and above. No changes are required in code, the Go client will automatically detect the new version and is backwardly compatible with existing supported versions . This version hardens event processing and adds support for proper implementation queues and other future protocols
- Added the ability to specify a pruneFactor (defaults to 0.8 or 80%) for a near cache. This indicates the percentage of the total number of units that will remain after the cache manager prunes the near cache(i.e. this is the "low watermark" value)
- The minimum TTL for near cache is now 1/4 second. This change was made to bring the client into parity with other clients and ti improve the performance of the expiry operation in a near cache. You will received an error if you try to set the TTL < 1/4 second
- Updated Queue API - This update provides a more stable API and adds support for the following queue types
Queue
- a simple queue which stores data in a single partition and is limited to approx 2GB of storagePagedQueue
- a queue which distributes data over the cluster and is only limited by the cluster capacityDequeue
- a simple double-ended queue that stores data in a single partition
- Harden the connection check and resolver lookup on connection failover
Note: The queue API has changed and you will need to update your code. See breaking changes below.
Breaking Changes
Queues
- In this release, the queues API has been rewritten based upon the above internal gRPC v1 API. This was done to improve reliability, and prepare for support for other protocols in the future and Queues were affected. This means that Queues in v2.0.0+ of the coherence-go-client it will only work against CE 24.09+ or Commercial 14.1.2.0+ Coherence versions
- If you wish to use the old queue API <v2.0.0 , it will only work against Coherence CE 24.03
Other Breaking Changes
To ensure compatibility with other Coherence API's, the following functions now return channels of StreamedEntry[K, R]
rather than StreamedValue[R]
. You will need to change any code that uses the following API's:
InvokeAllFilter[K comparable, V any, R any]
- now returns<-chan *StreamedEntry[K, R]
InvokeAllKeys[K comparable, V any, R any]
- now returns<-chan *StreamedEntry[K, R]
Bug Fixes
- Fixed an issue where the resolve would not resolve addresses correctly on failover
Documentation
Getting Started
go get github.com/oracle/coherence-go-client/[email protected]
What's Changed
- Update jib version by @tmiddlet2666 in #94
- Add latest CE patches to workflow by @tmiddlet2666 in #95
- Add support for v1 of API by @tmiddlet2666 in #96
- Initial queues gRPCv1 support by @tmiddlet2666 in #97
- Update near cache to support synchronous listeners by @tmiddlet2666 in #98
- Correct local cache size calculation and add tests by @tmiddlet2666 in #101
- Near cache expiry improvements by @tmiddlet2666 in #102
- Further near cache expiry optimizations by @tmiddlet2666 in #103
Full Change log: v1.2.2...v2.0.0-rc3
Coherence Go Client - v2.0.0-rc2
Introduction
This is release v2.0.0-rc2 of the Coherence Go Client, an API for accessing Coherence via a native Go client.
Note: this is a release candidate only and functionality may be changes before the official
v2.0.0
release.
Requirements
- Coherence CE 22.06.4+, 24.03+, or Coherence 14.1.1.2206.4+ Commercial edition with a configured gRPCProxy. (Always ensure you are using the latest Coherence available patch.)
- Go 1.19.+
Updates / New Features
Since v2.0.0-rc1
- Attempt to harden the connection check and resolver lookup on connection failover.
Other Update
- Added support for new internal gRPC v1 API in CE 24.09 and commercial 14.1.2 and above. No changes are required in code, the Go client will automatically detect the new version and is backwardly compatible with existing supported versions . This version hardens event processing and adds support for proper implementation queues and other future protocols.
- Added the ability to specify a pruneFactor (defaults to 0.8 or 80%) for a near cache. This indicates the percentage of the total number of units that will remain after the cache manager prunes the near cache(i.e. this is the "low watermark" value)
- The minimum TTL for near cache is now 1/4 second. This change was made to bring the client into parity with other clients and ti improve the performance of the expiry operation in a near cache. You will received an error if you try to set the TTL < 1/4 second
- Updated Queue API - This update provides a more stable API and adds support for the following queue types
Queue
- a simple queue which stores data in a single partition and is limited to approx 2GB of storage.PagedQueue
- a queue which distributes data over the cluster and is only limited by the cluster capacity.Dequeue
- a simple double-ended queue that stores data in a single partition
Note: The queue API has changed and you will need to update your code. See breaking changes below.
Breaking Changes
Queues
- In this release, the queues API has been rewritten based upon the above internal gRPC v1 API. This was done to improve reliability, and prepare for support for other protocols in the future and Queues were affected. This means that Queues in v2.0.0+ of the coherence-go-client it will only work against CE 24.09+ or Commercial 14.1.2.0+ Coherence versions
- If you wish to use the old queue API <v2.0.0 , it will only work against Coherence CE 24.03
Other Breaking Changes
To ensure compatibility with other Coherence API's, the following functions now return channels of StreamedEntry[K, R]
rather than StreamedValue[R]
. You will need to change any code that uses the following API's:
InvokeAllFilter[K comparable, V any, R any]
- now returns<-chan *StreamedEntry[K, R]
InvokeAllKeys[K comparable, V any, R any]
- now returns<-chan *StreamedEntry[K, R]
Bug Fixes
- Fixed an issue where the resolve would not resolve addresses correctly on failover
Documentation
Getting Started
go get github.com/oracle/coherence-go-client/[email protected]
What's Changed
- Update jib version by @tmiddlet2666 in #94
- Add latest CE patches to workflow by @tmiddlet2666 in #95
- Add support for v1 of API by @tmiddlet2666 in #96
- Initial queues gRPCv1 support by @tmiddlet2666 in #97
- Update near cache to support synchronous listeners by @tmiddlet2666 in #98
Full Change log: v1.2.2...v2.0.0-rc2
Coherence Go Client - v2.0.0-rc1
Introduction
This is release v2.0.0-rc1 of the Coherence Go Client, an API for accessing Coherence via a native Go client.
Note: this is a release candidate only and functionality may be changes before the official
v2.0.0
release.
Requirements
- Coherence CE 22.06.4+, 24.03+, or Coherence 14.1.1.2206.4+ Commercial edition with a configured gRPCProxy. (Always ensure you are using the latest Coherence available patch.)
- Go 1.19.+
Updates / New Features
- Added support for new internal gRPC v1 API in CE 24.09 and commercial 14.1.2 and above. No changes are required in code, the Go client will automatically detect the new version and is backwardly compatible with existing supported versions . This version hardens event processing and adds support for proper implementation queues and other future protocols.
- Added the ability to specify a pruneFactor (defaults to 0.8 or 80%) for a near cache. This indicates the percentage of the total number of units that will remain after the cache manager prunes the near cache(i.e. this is the "low watermark" value)
- Updated Queue API - This update provides a more stable API and adds support for the following queue types
Queue
- a simple queue which stores data in a single partition and is limited to approx 2GB of storage.PagedQueue
- a queue which distributes data over the cluster and is only limited by the cluster capacity.Dequeue
- a simple double-ended queue that stores data in a single partition
Note: The queue API has changed and you will need to update your code. See breaking changes below.
Breaking Changes
Queues
- In this release, the queues API has been rewritten based upon the above internal gRPC v1 API. This was done to improve reliability, and prepare for support for other protocols in the future and Queues were affected. This means that Queues in v2.0.0+ of the coherence-go-client it will only work against CE 24.09+ or Commercial 14.1.2.0+ Coherence versions
- If you wish to use the old queue API <v2.0.0 , it will only work against Coherence CE 24.03
Other Breaking Changes
To ensure compatibility with other Coherence API's, the following functions now return channels of StreamedEntry[K, R]
rather than StreamedValue[R]
. You will need to change any code that uses the following API's:
InvokeAllFilter[K comparable, V any, R any]
- now returns<-chan *StreamedEntry[K, R]
InvokeAllKeys[K comparable, V any, R any]
- now returns<-chan *StreamedEntry[K, R]
Bug Fixes
- Fixed an issue where the resolve would not resolve addresses correctly on failover
Documentation
Getting Started
go get github.com/oracle/coherence-go-client/[email protected]
What's Changed
- Update jib version by @tmiddlet2666 in #94
- Add latest CE patches to workflow by @tmiddlet2666 in #95
- Add support for v1 of API by @tmiddlet2666 in #96
- Initial queues gRPCv1 support by @tmiddlet2666 in #97
- Update near cache to support synchronous listeners by @tmiddlet2666 in #98
Full Change log: v1.2.2...v2.0.0-rc1
Coherence Go Client - v1.2.2
Introduction
This is release v1.2.2 of the Coherence Go Client, an API for accessing Coherence via a native Go client.
Requirements
- Coherence CE 22.06.4+, 24.03+, or Coherence 14.1.1.2206.4+ Commercial edition with a configured gRPCProxy.
(Always ensure you are using the latest Coherence available patch.) - Go 1.19.+
Updates
- Updated the gRPC resolver address
coherence:///host:port
to randomize the addresses that it returns. This can be turned off by setting the environment variableCOHERENCE_RESOLVER_RANDOMIZE=false
Bug Fixes
- N/A
Documentation
Getting Started
go get github.com/oracle/coherence-go-client@latest
After executing this command coherence-go-client is ready to use, and it's source will be in:
$GOPATH/pkg/mod/github.com/oracle/coherence-go-client@latest
What's Changed
- Prepare for next release by @tmiddlet2666 in #91
- Add environment vairable to randomize resolver addresses by @tmiddlet2666 in #92
- Minor doc update by @tmiddlet2666 in #93
Full Changelog: v1.2.1...v1.2.2
Coherence Go Client - v1.2.1
Introduction
This is release v1.2.1 of the Coherence Go Client, an API for accessing Coherence via a native Go client.
Requirements
- Coherence CE 22.06.4+, 24.03+, or Coherence 14.1.1.2206.4+ Commercial edition with a configured gRPCProxy.
(Always ensure you are using the latest Coherence available patch.) - Go 1.19.+
Major New Features
- Added support to use the Coherence Name Service to lookup gRPC endpoints by specifying the resolve address of
coherence:///host:port
where host is a machine in the cluster and port is the cluster port.
E.g.coherence:///localhost:7574
Bug Fixes
- N/A
Documentation
Getting Started
go get github.com/oracle/coherence-go-client@latest
After executing this command coherence-go-client is ready to use, and it's source will be in:
$GOPATH/pkg/mod/github.com/oracle/coherence-go-client@latest
What's Changed
- Add name service resolver by @tmiddlet2666 in #88
- Refactor queues example by @tmiddlet2666 in #89
- Minor doc by @tmiddlet2666 in #90
Full Changelog: v1.2.0...v1.2.1
Coherence Go Client - v1.2.0
Introduction
This is release v1.2.0 of the Coherence Go Client, an API for accessing Coherence via a native Go client.
Requirements
- Coherence CE 22.06.4+, 24.03+, or Coherence 14.1.1.2206.4+ Commercial edition with a configured gRPCProxy.
(Always ensure you are using the latest Coherence available patch.) - Go 1.19.+
Major New Features
- Added Queue support - See GoDoc for full details.
- Added the following utility functions
InvokeAllKeysBlind
,InvokeAllBlind
andInvokeAllFilterBlind
, which don’t return the actual entry processor values in the function signature for ease of use.
Note: Queues are only available when connecting to a Community Edition 24.03 cluster and above
Bug Fixes
- Various Events hardening
Documentation
Getting Started
go get github.com/oracle/coherence-go-client@latest
After executing this command coherence-go-client is ready to use, and it's source will be in:
$GOPATH/pkg/mod/github.com/oracle/coherence-go-client@latest
What's Changed
- Prepare for next release by @tmiddlet2666 in #75
- Bump version of google.golang.org/protobuf by @tmiddlet2666 in #76
- Initial Queues support by @tmiddlet2666 in #77
- Update Coherence versions by @tmiddlet2666 in #78
- Harden events tests by @tmiddlet2666 in #79
- address Queues tests failures by @tmiddlet2666 in #80
- Add tests for reading from queue generated in Java by @tmiddlet2666 in #81
- Add 22.06.8 to ci/cd by @tmiddlet2666 in #82
- Bump version of golang.org/x/net -> v0.23.0 by @tmiddlet2666 in #83
- Add utility functions InvokeAllKeysBlind, InvokeAllBlind and InvokeA… by @tmiddlet2666 in #84
- Update memory for containers by @tmiddlet2666 in #85
- Minor doc updates by @tmiddlet2666 in #86
- Update actions versions by @tmiddlet2666 in #87
Full Changelog: v1.1.1...v1.2.0
Coherence Go Client - v1.1.1
Introduction
This is release v1.1.1 of the Coherence Go Client, an API for accessing Coherence caches via a native Go client.
Note: One issue related to clear operation and near cache was fixed from v1.1.0 and you should use this release.
Requirements
- Coherence CE 22.06.4+, 23.03+, or Coherence 14.1.1.2206.4+ Commercial edition with a configured gRPCProxy.
(Always ensure you are using the latest Coherence available patch.) - Go 1.19.+
New Features
Near Cache
This release of the Coherence Go client allows you to specify a near cache to cache frequently accessed data in your Go application.
When you access data using Get()
or GetAll()
operations, returned entries are stored in the near cache and subsequent data access for keys in the near cache is almost instant where without a near cache each operation above always results in a network call.
On creating a near cache, Coherence automatically adds a MapListener to your NamedMap or NamedCache which listens on
all cache events and updates or invalidates entries in the near cache that have been changed or removed on the server.
To manage the amount of memory used by the near cache, the following options are supported when creating one:
- time-to-live (TTL) – objects expired after time in near cache, e.g. 5 minutes
- High-Units – maximum number of cache entries in the near cache
- Memory – maximum amount of memory used by cache entries
See the Godoc and examples for more details.
Fixed Issues since v1.0.3
- Fixed an timing issue with near cache clear
- Ensure PutWithExpiry cannot take an invalid expiry
- Fixed a number of potential race conditions
- Include
-race
option when running examples to pickup any new potential conditions
Documentation
Getting Started
go get github.com/oracle/coherence-go-client@latest
After executing this command coherence-go-client is ready to use, and it's source will be in:
$GOPATH/pkg/mod/github.com/oracle/coherence-go-client@latest
What's Changed
- Fixed an timing issue with near cache clear by @tmiddlet2666 in #74
- Ensure PutWithExpiry does not supply an invalid expiry by @tmiddlet2666 in #65
- Add CE 23.09.1 to CI/CD by @tmiddlet2666 in #66
- Update coherence-ce version in README by @tmiddlet2666 in #67
- Fix some race conditions by @tmiddlet2666 in #68
- Update ce versions in CI/CD by @tmiddlet2666 in #69
- Add 23.09.2 to ci/cd by @tmiddlet2666 in #70
- Implement near cache by @tmiddlet2666 in #71
- Minor doc by @tmiddlet2666 in #72
Full Changelog: v1.0.3...v1.1.1
Coherence Go Client - v1.1.0
Introduction
Note: Due to a late breaking issue related to clear operation and near cache , you should use release v1.1.1
This is release v1.1.0 of the Coherence Go Client, an API for accessing Coherence caches via a native Go client.
Requirements
- Coherence CE 22.06.4+, 23.03+, or Coherence 14.1.1.2206.4+ Commercial edition with a configured gRPCProxy.
(Always ensure you are using the latest Coherence available patch.) - Go 1.19.+
New Features
Near Cache
This release of the Coherence Go client allows you to specify a near cache to cache frequently accessed data in your Go application.
When you access data using Get()
or GetAll()
operations, returned entries are stored in the near cache and subsequent data access for keys in the near cache is almost instant where without a near cache each operation above always results in a network call.
On creating a near cache, Coherence automatically adds a MapListener to your NamedMap or NamedCache which listens on
all cache events and updates or invalidates entries in the near cache that have been changed or removed on the server.
To manage the amount of memory used by the near cache, the following options are supported when creating one:
- time-to-live (TTL) – objects expired after time in near cache, e.g. 5 minutes
- High-Units – maximum number of cache entries in the near cache
- Memory – maximum amount of memory used by cache entries
See the Godoc and examples for more details.
Fixed Issues since v1.0.3
- Ensure PutWithExpiry cannot take an invalid expiry
- Fixed a number of potential race conditions
- Include
-race
option when running examples to pickup any new potential conditions
Documentation
Getting Started
go get github.com/oracle/coherence-go-client@latest
After executing this command coherence-go-client is ready to use, and it's source will be in:
$GOPATH/pkg/mod/github.com/oracle/coherence-go-client@latest
What's Changed
- Ensure PutWithExpiry does not supply an invalid expiry by @tmiddlet2666 in #65
- Add CE 23.09.1 to CI/CD by @tmiddlet2666 in #66
- Update coherence-ce version in README by @tmiddlet2666 in #67
- Fix some race conditions by @tmiddlet2666 in #68
- Update ce versions in CI/CD by @tmiddlet2666 in #69
- Add 23.09.2 to ci/cd by @tmiddlet2666 in #70
- Implement near cache by @tmiddlet2666 in #71
- Minor doc by @tmiddlet2666 in #72
Full Changelog: v1.0.3...v1.1.0
Coherence Go Client - v1.0.3
Introduction
This is release v1.0.3 of the Coherence Go Client, an API for accessing Coherence caches via native Go client.
Documentation
Requirements
- Coherence CE 22.06.4+, 23.03+, or Coherence 14.1.1.2206.4+ Commercial edition with a configured gRPCProxy.
Always ensure you are using the latest available patch. - Go 1.19.+
Getting Started
go get github.com/oracle/coherence-go-client@latest
After executing this command coherence-go-client is ready to use, and it's source will be in:
$GOPATH/pkg/mod/github.com/oracle/coherence-go-client@latest
Fixed Issues since v1.0.2
All changes since v1.0.2
Coherence Go Client - v1.0.2
Introduction
This is release v1.0.2 of the Coherence Go Client, an API for accessing Coherence caches via native Go client.
Documentation
Requirements
- Coherence CE 22.06.4+, 23.03+, or Coherence 14.1.1.2206.4+ Commercial edition with a configured gRPCProxy.
Always ensure you are using the latest available patch. - Go 1.19.+
Getting Started
go get github.com/oracle/coherence-go-client@latest
After executing this command coherence-go-client is ready to use, and it's source will be in:
$GOPATH/pkg/mod/github.com/oracle/coherence-go-client@latest