Releases: naver/arcus-java-client
Releases · naver/arcus-java-client
Arcus Java Client 1.14.0
🐣 New Features
- Bulk methods using varargs keys are deprecated. Instead, methods using collection keys are still available.
- ArcusClient factory methods without zookeeper address are deprecated.
- Provide shutdown(long, TimeUnit) method for ArcusClient.
- Add auto import setting.
- Add DNS cache TTL verification.
- Add ArcusClient factory methods without ConnectionFactoryBuilder.
- Add async mop upsert method.
🔧 Enhancements
- Add connection information and elapsed time into TimeoutException message.
- Add all operations at once in broadcast methods.
- Return GetFuture instead of OperationFuture in asyncGets method.
- Use GetResult class instead of setting results into future directly in collection get methods.
- Use List#sublist method instead of using nested collection when split operations in bulk methods.
- Refactor redundant concurrent data structure and unnecessary modifier.
- Change the way ArcusClient is named.
- Change MBean name of ArcusClient to make more readable.
- Remove Transcoder argument in LocalCacheManager.
- Remove unused methods/variables and redundant generic type.
- Remove unused TimeoutException constructors.
- Remove TranscoderService field in MemcachedClient and BulkService properties in ConnectionFactoryBuilder. Decoding value with transcoder will be done in user thread, such as tomcat thread.
🐛 Bug Fixes
- Make different results from InetSocketAddress.toString() same across JDK versions
- Throw exception when bop get bulk count is lower than 1.
- Fix invalid isTimeout value when creating BulkGetFuture with another object.
- Set default value of shouldOptimize to false in DefaultConnectionFactory.
- Consider optimizedOp when drain all of operations from the writeQ.
- Make sure to create readonly copy of locator that has same shape with original one.
📝 Documentation
- Fix wrong information.
- Add DNS cache TTL information.
- Add mop upsert API description.
✅ Testing
- Upgrade CI setup python version to 2.7.
- Use docker compose in CI tests.
- Fix various test cases which could be failed sometimes.
- Stop CI test when at least one test fails.
⬆️ Dependency Upgrades
- Upgrade Java version to 8.
- Upgrade log4j version to 2.23.1.
- Upgrade slf4j version to 2.0.12.
Arcus Java Client 1.13.4
2023-09-25 [version 1.13.4]
* [FEATURE] shutdown client after all of operations are processed
* [FEATURE] Prepared the node locator for data migration
* [FEATURE] Add TCP connection keep-alive option.
* [ENHANCE] add pool and service code information on timeout message
* [ENHANCE] Reconnect to ZK when cache_list znode is deleted.
* [ENHANCE] Enhance MemcachedNode.toString().
* [ENHANCE] Added a JRE version in client_list znode.
* [ENHANCE] Optimize groupingKeys() logic
* [ENHANCE] change put method logic in LocalCacheManager in aysncGet.
* [ENHANCE] Remove repeating encode logic in CollectionBulkInsert.
* [ENHANCE] Seperate FrontCacheLogic in asyncGetBulk from MemcachedClient
to FrontCacheMemcachedClient.
* [ENHANCE] Modify decoding logic in collection get api.
* [ENHANCE] Change decode logic in BTreeGetBulk api.
* [FIX] get operation can be bulk operation if having multi key.
* [FIX] removed key field in CollectionBulkInsertOperationImpl.
* [FIX] Add eflag field in SMGetElement class.
* [FIX] Fix BTreeSMGetImpl.decodeItemHeader()
* [FIX] Rollback MultiOperationCallback.
* [FIX] add pip dependency install
* [FIX] Add apt-get update command before apt-get install.
* [FIX] adjust checkstyle to mopDelete()
* [FIX] Fix buggy code.
* [FIX] remove duplicate maven dependency caching
* [FIX] Call Future.get() in test setup.
* [FIX] Checkstyle violation
* [FIX] Call Future.get() for fix CI bug.
* [FIX] Remove unused import.
* [FIX] Fix operation redirection.
* [FIX] Not to cancel operations in node that not in cache list but in
alter list.
* [FIX] Fix readQ, writeQ size error.
* [FIX] Set handling node to print node information in "inactive node"
cancel message.
* [FIX] Fix bug that is occurred when client is attached to Arcus cluster
that is doing migration type=LEAVE.
* [FIX] Modified the count value of CountDownLatch in broadcastOperation.
* [FIX] Fixed a simple code mistake in processAlterListResult().
* [FIX] Checked that the new alter node must not be in allNodes.
* [FIX] Checked that new joining node must not be in allNodes.
* [FIX] Fixed the logic of locator.getOwnerNode().
* [FIX] Fix migration JOIN bug.
* [FIX] Fixed the code of moving the hash range of leaving nodes.
* [FIX] getVersion method concurrency error.
* [FIX] size of mergedOpStatus list in pipedCollectionOperation.
* [FIX] getOperationStatus method in asyncCollectionPipedInsert/Update.
* [FIX] Element sequence when using asyncLopInsert api.
* [FIX] Fix isCancelled,cancel method logic in BulkGetFuture.
* [FIX] change cancel method logic in OperationFuture.
* [FIX] Change cancel method logic in multi-operation Future.
* [FIX] Change keyGroup size comparing logic in groupingkeys method.
* [FIX] Change syncronization tool in getVersion().
* [FIX] sync problem in BaseOperationImpl cancel and transitionState
method.
* [FIX] Incorrect boolean result in asycn flush() method.
* [FIX] Infinity waiting with get method in BulkGetFuture.
* [FIX] getElement logic in BTreeStoreAndGetFuture.
* [CLEANUP] Added a makeMemcachedNode() called from attachMemcachedNode().
* [CLEANUP] Added the insertNodeIntoGroup() and removeNodeFromGroup().
* [CLEANUP] Logged the address of the newly attached alter node.
* [TEST] Set logger to Log4jLogger when running test.
* [TEST] Set log level to DEBUG temporarily to dig CI failure issue.
* [TEST] change python install script in ci.yml.
* [TEST] fix testcase in PipedBulkInsertSetWithAttrTest.
* [TEST] Add Socket keepAlive option test.
* [DOC] Replace "\t" to " ".
* [DOC] Make example codes more readable.
* [DOC] fixed the name of async get bulk API in getSome().
* [DOC] Fixed how to receive the result value of asyncStoreBulk Future.
* [INTERNAL] Fix compile warnings.
* [INTERNAL] Prepare BTreeSMGet to clone operations.
* [INTERNAL] Clone operations to prepare migration.
* [INTERNAL] add asyncMopDelete method - delete by mkeyList
* [INTERNAL] add omitted parameter methods - list/set/map
* [INTERNAL] separate usage of subkey and bkey/mkey
* [INTERNAL] add omitted parameter method - asyncBopGet()
* [INTERNAL] Prepare SetPipedExist to redirect in migration.
* [INTERNAL] Prepare NodeLocator to redirect in migration.
* [INTERNAL] Redirect to prepare migration.
* [INTERNAL] Disabled auto join completion and auto leave abort.
* [INTERNAL] Enhance compile options.
* [INTERNAL] Remove DEBUG level log for #534
* [INTERNAL] Prepare to migration.
* [INTERNAL] Change CI command to detect Checkstyle violation.
* [INTERNAL] Wait a second before reinit CacheMonitor or MigrationMonitor.
* [INTERNAL] Reset the continuous timeout if any among piped ops succeeds
* [INTERNAL] Use last nodes change.
* [INTERNAL] Overriding idDone() in BulkOperationFuture
* [INTERNAL] Upgrade ZK Client dependency version from 3.4.14 to 3.5.9
* [INTERNAL] Add comment in collection get apis.
Arcus Java Client 1.13.3
2022-04-26 [version 1.13.3]
* [FEATURE] print select delay in case of too many empty selected keys.
* [FEATURE] shutdown client more gracefully.
* [FEATURE] add closeChannel interface in MemcachedNode.
* [FEATURE] apply Github-CI to test client.
* [FEATURE] return true from isPipeOperation() of
CollectionBulkInsertOperationImpl.
* [FEATURE] add timeout duration threshold.
* [FEATURE] use System.nanoTime() instead of System.currentTimeMillis()
in MemcachedConnection.
* [FEATURE] prevent duplicate nodes from being added into the reconnect queue.
* [FEATURE] delayed switchover task from switchover event of zookeeper.
* [FEATURE] add isIdempotentOperation in Operation interface.
* [FEATURE] block to use redistribute failure mode in ArcusClient.
* [FEATURE] add bkey validation.
* [FEATURE] upgrade log4j version for security vulnerabilities.
* [FEATURE] support cancel failure mode in mget, mgets operation.
* [FEATURE] support expanded replication group.
* [FEATURE] add node version statistics for monitoring mbean
* [FEATURE] update node statistics when the cache list changes.
* [FEATURE] throw exception if memcached nodes do not exist at first.
* [ENHANCE] do switchover task immediately if readQ is empty or
node is going to be reconnected.
* [ENHANCE] Enhance timeout exception message.
* [ENHANCE] Remove getRepresentKey() and add getMemcachedNode() to
BTreeSMGet to skip key iteration for searching MemcachedNode.
* [ENHANCE] filter duplicated operation from not writeQ but readQ.
* [ENHANCE] do not rearrange list when removing addresses of changed
replicaion groups.
* [ENHANCE] add the TimeoutException message to broad casting operation.
* [FIX] set channel to node first before connecting it in assertion mode.
* [FIX] change the fast shutdown time.
* [FIX] fix ConcurrentModificationException in removing entry of reconnect map.
* [FIX] removed prevAddrMap field to update cachelist correctly.
* [FIX] resolve ConcurrentModificationException occurs in handleNodesToRemove.
* [FIX] reset operation state in resend.
* [FIX] change the order of moveOperation and ChangeRole on switchover.
* [FIX] remove unnecessary String.valueOf in ArcusClient.asyncMopUpdate.
* [FIX] CollectionOperationImpl command buffer.
* [FIX] update node name when switchover.
* [FIX] fixed long type string to unsigned long type string on bkey.
* [FIX] Operation command buffer size.
* [FIX] reset operation state in writing state when moving operations to
new master node.
* [FIX] fixed parsing only one result after switchover in pipe operation.
* [FIX] add null check in attachment removal of selection key.
* [FIX] do not create connection pool array if node address is empty.
* [FIX] on the bulk operation only the timed out operation set the timed out.
* [CLEANUP] remove socket channel argument in MemcachedNode constructor.
* [CLEANUP] remove createKeyIfNotExist field and duplicate codes in
collection insert classes.
* [CLEANUP] refactored ReconnectQueue of MemcachedConnection.
* [CLEANUP] add comment about avoiding ConcurrentModificationException.
* [CLEANUP] refactored CollectionGet.
* [CLEANUP] refactored updateReplConnections in MemcachedConnection.
* [CLEANUP] separate constructor for searching condition.
* [CLEANUP] refactored bkey.
* [CLEANUP] isDebugEnabled and isInfoEnabled flag to print debug log.
* [CLEANUP] refactored get exist bkey.
* [CLEANUP] fixed the code indentation.
* [CLEANUP] refactored the method for validating replication group.
* [CLEANUP] refactored the method to checking switchover.
* [CLEANUP] refactored the cache list update functions of replication cluster.
* [CLEANUP] return immutable collection of node and groups.
* [CLEANUP] re-naming variables and methods in MemcachedConnection more clearly.
* [CLEANUP] removed readBufferSize argument in MemcachedConnection().
* [CLEANUP] refactor ArcusClient initialization codes.
* [CLEANUP] incorrect indentation.
* [CLEANUP] removed hashAlgorithm argument from ArcusKetamaLocator constructor.
* [CLEANUP] removed unnecessary log warn message in getAllOperations().
* [TEST] fix build error in ClientBaseCase test class.
* [TEST] use assertEquals to check unexpected value from get operation in
BulkStoreTest.
* [DOC] update btree api doc.
* [DOC] add ci and license badge.
* [DOC] fixed percent encoding
* [DOC] add description of collection attribute.
* [DOC] add the precaution about character encoding.
* [DOC] Update docs (fix typo, fix outdated code sample).
* [DOC] add jdk requirements to README.md.
* [DOC] fix invalid javadoc param.
Arcus Java Client 1.13.2
2021-05-08 [version 1.13.2]
* [FIX] do not use default transcoder.
Arcus Java Client 1.13.1
2021-05-04 [version 1.13.1]
* [FIX] support library backward compatibility for arcus-spring
* [FIX] fix compatibility with Java 6, 7, 8 for ByteBuffer
* [TEST] fix sleep time for item to be expired
Arcus Java Client 1.13.0
2021-03-17 [version 1.13.0]
* [FEATURE] support mgets command.
* [FEATURE] change return type of kv API. (Future => OperationFuture)
* [FEATURE] set the max key size to 4000.
* [FIX] invalid key length in bop mget, smget command.
* [FIX] cancel sync operations when an exception occurred.
* [ENHANCE] add node information to the cancellation message.
* [ENHANCE] add the specific TimeoutException message.
* [ENHANCE] do not check the op existence in readQ when writing it.
* [ENHANCE] do not cancel the operations if it is first connecting.
* [ENHANCE] reflected only the changed groups in hash ring.
* [CLEANUP] apply whitespace checkstyle.
* [TEST] bump junit from 4.4 to 4.13.1.
* [DOC] add the description of future api.
* [DOC] change the description of the max item size.
* [DOC] adjust some format to improve doc readability.
Arcus Java Client 1.12.1
2020-08-04 [version 1.12.1]
* [FEATURE] asyncDeleteBulk
* [FEATURE] add maven plugin of checkstyle
* [FEATURE] apply checkstyle
* [CLEANUP] apply Indentation checkstyle
* [CLEANUP] apply LineLength checkstyle
* [CLEANUP] reduce line length in test sources
* [CLEANUP] reduce line length in client sources
* [CLEANUP] apply Import checkstyle
* [CLEANUP] replace tab charcter to space
* [CLEANUP] remove nested block
* [CLEANUP] prevent instantiation of utility classes
* [CLEANUP] remove duplicate code for parsing response of
BTreeGetBulkOperation
* [CLEANUP] merged CollectionUpsertOperation to CollectionStoreOperation
* [CLEANUP] solve hash point collision with comparison socket address of
node
* [CLEANUP] renamed store to insert of collection
* [CLEANUP] update comment for collection response format
* [CLEANUP] change some javadoc comments to use code tag
* [CLEANUP] don't occur switchover in sop exist operation.
* [CLEANUP] remove non-javadoc comments
* [CLEANUP] refactor asyncSetBulk, asyncDeleteBulk
* [CLEANUP] deprecate bulkService API
* [CLEANUP] refactored the constructor functions of KetamaNodeLocator.
* [CLEANUP] refactor the parts that use socketChannel API
* [CLEANUP] remove the authentication failure log when OperationException
occurs
* [CLEANUP] refactored the handleNodeManageQueue() method
* [CLEANUP] refactored the attemptReconnects() method
* [CLEANUP] refactored the ENABLE_REPLICATION code tag
* [CLEANUP] refactered the updateConnections() method
* [CLEANUP] separated the updateReplConnections() from the
updateConnections()
* [CLEANUP] moved the selector wakeup code into putMemcachedQueue()
* [FIX] Canceling the operations if input queue of node is full when moving
operations
* [ENHANCE] destroy read queue of removed node
* [ENHANCE] do not cancel the operation twice when using authentication in
setupResend of TCPMemcachedNodeImpl
* [TEST] refactor test codes related setUp and tearDown
Arcus Java Client 1.12.0
020-03-16 [version 1.12.0]
* [FEATURE] change max element bytes
* [FIX] ConcurrentModificationException in foreach loop of
SelectionKey in handleIO
* [FIX] May produce NullPointerException when checking
the operation has been canceled
* [ENHANCE] Skip the cancelled operation has not been
written to buffer
* [CLEANUP] convert log4j configuration file format from
properties to xml
* [CLEANUP] convert tab to space in pom.xml
* [CLEANUP] remove readQ overflow
* [CLEANUP] refactor version operation handling
* [CLEANUP] edit getMaxReconnectDelay method comment
* [TEST] fix travis failed test case when USE_ZK is true
* [TEST] ignore ConsistentHashingTest
* [DOC] fix broken link of flush in other API
* [DOC] update description of logging
* [DOC] remove bold on link in btree API
* [OTHER] upgrade log4j version for security vulnerabilities
* [OTHER] upgrade zookeeper version 3.4.5=>3.4.14
Arcus Java Client 1.11.5
2019-06-05 [version 1.11.5]
* [FIX] asyncBopIncr,asyncBopDecr command initial range problem
* [CLEANUP] remove TIMEDOUT state of operation
* [CLEANUP] remove the limitation of bopGetBulk key size
* [DOC] Changed ATTR_MISMATCH response description according to spec change of 'bop smget'
Arcus Java Client 1.11.4
2018-11-08 [version 1.11.4]
* [FIX] change FAKE_SERVER_NODE check method
* [FIX] do not cancel an operation already canceled in setupResend