Skip to content

Releases: naver/arcus-java-client

Arcus Java Client 1.14.0

01 Aug 06:15
Compare
Choose a tag to compare

🐣 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

25 Sep 07:06
Compare
Choose a tag to compare

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

26 Apr 11:18
Compare
Choose a tag to compare

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

08 May 07:40
Compare
Choose a tag to compare

2021-05-08 [version 1.13.2]

* [FIX] do not use default transcoder.

Arcus Java Client 1.13.1

04 May 10:57
Compare
Choose a tag to compare

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

17 Mar 00:46
Compare
Choose a tag to compare

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

04 Aug 06:31
Compare
Choose a tag to compare

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

16 Mar 07:36
Compare
Choose a tag to compare

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

05 Jun 01:46
Compare
Choose a tag to compare

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

08 Nov 03:25
Compare
Choose a tag to compare

2018-11-08 [version 1.11.4]

    * [FIX] change FAKE_SERVER_NODE check method
    * [FIX] do not cancel an operation already canceled in setupResend