- GOCBC-1278:
- Added support for
ExtReplaceBodyWithXattr
(copy based unstaging) to transactions.
- Added support for
- GOCBC-1311:
- Added support for
ExtThreadSafety
to transactions.
- Added support for
- GOCBC-1430:
- Use
/whoami
rather than/
for pinging the management service.
- Use
- GOCBC-1676:
- Added support for application telemetry.
- GOCBC-1701: Added support for
ExtGetMulti
to transactions.
- GOCBC-1712: Fixed issue where
Append
andPrepend
would returnDocExists
rather thanCasMismatch
.
This version primarily adds support for a new Columnar agent, and bumps the minimum supported Go version to 1.21.
- GOCBC-1676:
- Refactored http operation internals.
- Added support for
NodeUUID
in config parsing
- GOCBC-1687: Replaced usages of deprecated http transport dial functions.
- GOCBC-1688: Replaced usages of deprecated ioutil functions.
- GOCBC-1706: Added support for Columnar via a new Columnar Agent.
- GOCBC-1707: Bumped minimum supported Go version to 1.21.
- GOCBC-1708: Fixed issue where
PasswordAuthProvider
could leak credentials into the logs on agent startup.
- GOCBC-1658: Include cluster name & cluster UUID in all spans & metrics recorded by the SDK, if the server publishes them.
- GOCBC-1680: Added support for
ExtParallelUnstaging
. - GOCBC-1674: Added
MaxConnsPerHost
toHTTPConfig
. - GOCBC-1677: The vbucket ID is now logged when sending a memcached request.
- GOCBC-1680: Improved retry handling for HTTP operations.
- GOCBC-1659: Fixed nil pointer dereference in "ns-server mode" where an attempt was made to refresh the config using CCCP upon receiving a 0x0d (config-only) KV status.
- GOCBC-1660: Fixed potential data race that was occurring because the value of a lock was being logged in kvMux.
- GOCBC-1632: Added support for server groups in GetOneReplica & LookupIn, at uncommitted API stability level.
- GOCBC-1644: Fixed race that could occur when a request was retried and cancelled at the same time.
- GOCBC-1645:
- GOCBC-1640: Adjust logging for config management.
- GOCBC-1636: Fixed race in clusterAgent (only used by AgentGroup().
- GOCBC-1631: Handle scope not found error from memcached, and treat it the same as collection not found for retry behaviour.
- GOCBC-1626: Updated behaviour of ping and http requests on agent close to cancel in flight requests and prevent requests from being sent after close.
- GOCBC-1615: Removed superfluous validations from SCRAM client.
- GOCBC-1622:
Updated handling of degraded target state for
WaitUntilReady
.
- GOCBC-1614:
Updated API stability level of range scan to committed
Updated API stability level of
UseClusterMapNotifications
to committed
- GOCBC-1585:
If non-idempotent requests fail due to the socket closing while they are in-flight, they are now exposed to the retry orchestrator, with the reason
SocketCloseInFlightRetryReason
. - GOCBC-1591: Added support for scoped search indexes.
- GOCBC-1494: Added handling for some missing query error codes.
- GOCBC-1555: Added support for change history in DCP.
- GOCBC-1558:
Added support for the new
NOT_LOCKED
KV status. ExposedErrMemdNotLocked
. - GOCBC-1561: Use the KV error map description as the error message when receiving an unknown KV status code.
- GOCBC-1550:
Fixed issue where the SDK deadlocks if it is in ns_server mode and the server provides a config which does not contain a
thisNode
entry. - GOCBC-1569: Fixed issue where all direct dispatch retries fail when a pipeline closed error occurs, as the same pipeline is used. Reload the pipeline if direct dispatch fails with pipeline closed.
- GOCBC-1573: Fixed issue where the SDK attempts to use a prepared query name that exists in a different query context. Updated the query cache to store both the query context and the statement.
- GOCBC-1586:
Fixed issue where unmarshalling the collections manifest fails when the server reports that a collection has
maxTTL
equal to -1. Changed the type ofMaxTTL
inManifestCollection
fromuint32
toint32
.
- GOCBC-1439:
Improvements for faster failover.
Added support for SnappyEverywhere Hello.
Added support for cluster config known versions.
Added support for NMVB deduplicated response bodies
Added support for brief cluster map notifications, see:
AgentConfig{}.UseClusterMapNotifications
- GOCBC-1451: Updated DCP agents to only use HTTP polling.
- GOCBC-1542: Dropped "identical revision" log line down to debug level.
- GOCBC-1449:
Fixed issue where
GetCollectionManifest
,GetAllCollectionManifests
and aGetCollectionID
options were missing user impersonation. - GOCBC-1471: Fixed issue where calling Close on an Agent before polling has started up would lead to the poller failing to stop.
- GOCBC-1483: Retry requests when resetting cid cache queue.
- GOCBC-1489:
Expose
ErrCircuitBreakerOpen
.
- GOCBC-1479: Do not apply cluster configs during bootstrap if select bucket fails.
- GOCBC-1458: Updated route config log output.
- GOCBC-1465: Fixed issue where NoTLSSeedNode localhost ipv6 seed was parsed incorrectly.
- GOCBC-1434:
Added support for
LookupIn
replica reads.
- GOCBC-1446:
Fixed issue where calling
Commit
without any staged mutations would execute the callback with an error but not return from the function. - GOCBC-1441: Reverted GOCBC-1429.
- GOCBC-1426: Improved logging during agent shutdown.
- GOCBC-1432: Improved logging around when a cluster config is rejected.
- GOCBC-1413: Fixed issue where a panic would occur when UseTLS was set to false and NoTLSSeedNode set to true - no returns an error.
- GOCBC-1429: Fixed issue where a node would incorrectly be identified as the seed node when running in ns_server mode.
- GOCBC-1409: Updated DCP OSO to use improved SeqNoAdvance
- GOCBC-1410: Fixed issue where applying a cluster config during SDK shutdown could panic.
- GOCBC-1401: Exposed SeqNo on DCP rollback error.
- GOCBC-1403: Fixed issue where cccp poller would wait for a cluster config before starting.
- GOCBC-1393: Altered the behaviour of retries for enhanced prepared statements.
- GOCBC-1395: Improved timeout errors on http based services.
- GOCBC-1362:
Added support for sending unsupported frames with
memd.Conn
. - GOCBC-1322: Added volatile stability support for kv range scan. Added volatile stability support for waiting for a config snapshot to be available.
- GOCBC-1373: Added support for query error code 1197.
- GOCBC-1376: Fixed issue where lost cleanup would log an incorrectly formatted log line.
- GOCBC-1387: Fixed issue where an edge case could trigger a race between releasing connection buffers and reading on the connection - leading to a panic.
- GOCBC-1388:
Fixed issue where the SDK could not connect to all nodes when
NoTLSSeedNode
is set in environments where multiple nodes are identifying as 127.0.0.1 (and so do not set a hostname in the cluster config).
- GOCBC-1159: Added support for refreshing the DNS SRV record when cluster becomes uncontactable.
- GOCBC-1284: Significant refactoring work to kv bootstrap.
- GOCBC-1303:
Added
ServerWaitBackoff
to agent options. - GOCBC-1316: Added support for transactions ExtInsertExisting.
- GOCBC-1328: Only fallback from cccp polling to http polling once all nodes tried.
- GOCBC-1331: Added support for pipelining fetching a config into kv bootstrap.
- GOCBC-1335: Updated logging to include address and pointer location in memdclient.
- GOCBC-1351: Updated error message logged on auth failures.
- GOCBC-1352: Added support for trusting the system cert store when TLS enabled and no cert provider registered.
- GOCBC-1356:
Updated the behaviour when
MutateIn
orAdd
returnsNOT_STORED
to return aErrDocumentExists
.
- GOCBC-1347:
Fixed issue where a nil agent value could cause logging
TransactionATRLocation
to log a panic. - GOCBC-1348: Fixed issue where a race on creating a client record could lead to a panic.
- GOCBC-1293: Added support for resource units.
- GOCBC-1332: Added deadlines to collections operations options.
- GOCBC-1339:
Removed support for
CleanupWatchATRs
fromTransactionsConfig
. Note that whilst this field still exists it is not used internally, it is included only for API level backward compatibility. - GOCBC-1340:
Added support for automatically starting lost cleanup on
TransactionsConfig
CustomATRLocation
.
- GOCBC-1338:
Fixed issue where
lazyCircuitBreaker
was not using 64-bit aligned values.
- GOCBC-1347:
Known issue where a nil agent value could cause logging
TransactionATRLocation
to log a panic. - GOCBC-1348: Known issue where a race on creating a client record can lead to a panic.
- GOCBC-1246:
Added support for
TransactionLogger
toTransactionOptions
. - GOCBC-1314: Improved logging in the lost transactions process.
- GOCBC-1318:
Changed
WaitUntilReady
to always wait for any explicitly defined services to be online. - GOCBC-1319:
Added a
String
implemented tomemd.Packet
.
- GOCBC-1320: Fixed issue where vbucket hashing function wasn't masking out the 16th bit of the key.
- GOCBC-1264:
Added more documentation to
AgentConfig
. - GOCBC-1298:
- GOCBC-1299:
Masked the underlying cause of
TransactionOperationFailedError
. - GOCBC-1159: Made improvements to handle a rebalance during a freeze in serverless environments.
- GOCBC-1283: Update forward compatibility errors to include document details.
- GOCBC-1300:
Added collection unknown check to
ProcessATR
to improve lost cleanup deleted collection handling. - GOCBC-1304: Fixed issue where lost cleanup would block the SDK response thread for a connection.
- GOCBC-1301:
Fixed issue where
addLostCleanupLocation
was left nil afterResumeTransactionAttempt
called.
- GOCBC-1265: Bundle Capella CA certificates with the SDK.
- GOCBC-1221: Added support for improved query error handling.
- GOCBC-1238: Add config option to set the connection read buffer size.
- GOCBC-1242: Drain DCP queue on non-user initiated EOF.
- GOCBC-1244: Updated dependencies.
- GOCBC-1248: Fixed issue where a hard close of a memdclient during a graceful close could trigger a panic.
- GOCBC-1256: Fixed issue where config polling would fallback to using the http poller, when no http addresses are registered for use.
- GOCBC-1258: Fixed issue where log redaction tags were not closed correctly.
- TXNG-127: Integrate transactions into SDK.
- GOCBC-1232: Fixed issue where DCP stream End could race with request cancellation (due to rebalance, etc...).
- GOCBC-1233: Fixed issue where Agent close could hang if called whilst auth request in flight.
- GOCBC-1216: Add support for missing memcached status code 0x8d
- GOCBC-1222:
Updated memcached connections to use a
sync.Pool
for buffers for readers, to help reduce memory footprint.
- GOCBC-1214:
Fixed issue where nodes "actual" IP could be used for internal config instead of seed address when
NoTLSSeedNode
in use.
- GOCBC-1190: Added internal stability support for sending queries to specific nodes.
- GOCBC-1196:
- Added error body and status code to analytics, query, search, view errors.
- GOCBC-1205: Fixed issue where tracer spans were not always being finished.
- GOCBC-1206: Fixed issue where metrics were always incorrectly reporting very short durations for operations.
- GOCBC-1208: Fixed issue where cluster config polling would fallback to HTTP polling even when there was no bucket.
- GOCBC-1209: Fixed issue where the ns server connection string scheme wouldn't work for DCP.
- GOCBC-1179: Gracefully close memdclients on pipeline shutdown/reconnect.
- GOCBC-1180: Added support for the ns_server connection string scheme and seed (i.e. localhost) poller.
- GOCBC-1181:
Added support for
ReconfigureSecurity
function. - GOCBC-1182: Request error map v2 from the server.
- GOCBC-1193: Added the response body to query errors.
- GOCBC-1194: Fixed issue where we wouldn't try to build a route config with all seed nodes for default network type before trying external network type.
- GOCBC-1178: Don't remove poller controller watcher from cluster config updates.
- GOCBC-1177: Fixed issue where a connection being closed by the server during bootstrap could cause the SDK to loop reconnect without backoff.
- GOCBC-1162: Added support for initially bootstrapping the SDK over nonTLS when TLS is in use.
- GOCBC-1169:
Updated query streamer so that additional calls to
NextRow
return nil rather than panic.
- GOCBC-1160: Fixed issue where HTTP header used for user impersonation was incorrect.
- GOCBC-1163: Fixed issue where cluster config parsing would check existence of wrong ports for TLS (although then assign correct ports).
- GOCBC-1146: Added support for user impersonation to non-KV services.
- GOCBC-1148: Added support for forcibly reconnecting all connections.
- GOCBC-1150: Update user impersonation options for KV to use a string rather than []byte.
- GOCBC-1139: Fixed issue where DCP agent would try to use SCRAM auth with TLS enabled, causing LDAP usage to always fail bootstrap.
- GOCBC-1147: Fixed issue where failing to fetch the error map during bootstrap would lead to bootstrap hanging.
- Fixed issue where modules file contained incorrect gocbcore version.
- GOCBC-901:
Broke the
AgentConfig
up into grouped components. - GOCBC-1008: Updated mutate in to return cas mismatch error rather than document exists when doing a replace.
- GOCBC-1062: Added support for DCP snapshot marker v2 and v2.1.
- GOCBC-1081: During CCCP polling don't retry request if the error is request cancelled.
- GOCBC-1130: Updated Query error handling to return an authentication error on error code 13104.
- GOCBC-1087: Added support for communicating with Eventing and Backup services.
- GOCBC-1093:
Added support for
RevEpoch
in bucket configs. - GOCBC-1044:
- GOCBC-1128:
Added
Meter
interface and operation level response latency metric. - GOCBC-1133:
Remove
ViewQuery
fromAgentGroup
.
- GOCBC-1135: Fixed issue where cmd traces could be ended twice in some scenarios when operation was cancelled.
- GOCBC-1095: Fixed issue where SDK was parsing view error contents incorrectly.
- GOCBC-1102:
Fixed issue where
WaitUntilReady
wouldn't recover if one of the HTTP based services returned an error. - GOCBC-1106:
- GOCBC-1112: Fixed issues where fts responses were being parsed incorrectly.
- GOCBC-1127: Fixed issue where query errors could be parsed incorrectly.
- GOCBC-1071: Updated SDK to use new protocol level changes for get collection id.
- GOCBC-1068: Dropped log level to warn for when applying a cluster config object is preempted.
- GOCBC-1079: During bootstrap don't retry authentication if the error is request cancelled.
- GOCBC-1081: During CCCP polling don't retry request if the error is request cancelled.
- GOCBC-1080: Fixed issue where SDK would always rebuild connections on first cluster config fetched against server 7.0.
- GOCBC-1082: Fixed issue where bootstrapping a node during an SDK wide reconnect would cause a delay in connecting to that node.
- GOCBC-1088: Fixed issue where the poller controller could deadlock if a node reported a bucket not found at the same time as CCCP successfully fetched a cluster config for the first time.
- GOCBC-1056: Various performance improvements to reduce CPU level.
- GOCBC-1068: Dropped the log level for preempted config updates.
- GOCBC-940: Updated the tracing interfaces and orphaned response logging output.
- GOCBC-1066: Fixed issue which could cause the config pollers to panic.
- GOCBC-1041: Dropped the log level for memdclient read failures to warn, from error.
- GOCBC-1046:
Added
MaxTTl
toManifestCollection
.
- GOCBC-1042: Fixed issue where bucket names were not being correctly escaped.
- GOCBC-1050: Fixed issue where the diagnostics component could panic if an operation was cancelled by the user after it had already been internally cancelled.
-
GOCBC-1032: Added support for bucket capability support verification to agent, at API stability internal.
-
GOCBC-1030: Added support for internal cancellation of bootstrap before completion, allowing pipeline clients to shutdown without waiting for bootstrap to complete (such as on connection takeover).
Added support to fallback to http config fetching if select bucket fails with a valid fallback error, allowing for faster config fetching against non-kv nodes.
- GOCBC-854: Added support for user impersonation.
- GOCBC-1013:
Added support for
StatsKeys
andStatsChunks
toSingleServerStats
to support responses for stats keys such asconnections
which contain complex objects per packet.
- GOCBC-1016:
Fixed issue where creating an agent with no bucket and a non-default port HTTP address could lead to a panic in
WaitForReady
. (Note:WaitForReady
will never return success in this scenario) - GOCBC-1028: Fixed issue where bootstrapping against a non-kv node could never successfully fully connect.