Git Product home page Git Product logo

hazelcast-commandline-client's Introduction

Hazelcast

Slack javadoc Docker pulls Quality Gate Status


What is Hazelcast

The world’s leading companies trust Hazelcast to modernize applications and take instant action on data in motion to create new revenue streams, mitigate risk, and operate more efficiently. Businesses use Hazelcast’s unified real-time data platform to process streaming data, enrich it with historical context and take instant action with standard or ML/AI-driven automation - before it is stored in a database or data lake.

Hazelcast is named in the Gartner Market Guide to Event Stream Processing and a leader in the GigaOm Radar Report for Streaming Data Platforms. To join our community of CXOs, architects and developers at brands such as Lowe’s, HSBC, JPMorgan Chase, Volvo, New York Life, and others, visit hazelcast.com.

When to use Hazelcast

Hazelcast provides a platform that can handle multiple types of workloads for building real-time applications.

  • Stateful data processing over streaming data or data at rest
  • Querying streaming and batch data sources directly using SQL
  • Ingesting data through a library of connectors and serving it using low-latency SQL queries
  • Pushing updates to applications on events
  • Low-latency queue-based or pub-sub messaging
  • Fast access to contextual and transactional data via caching patterns such as read/write-through and write-behind
  • Distributed coordination for microservices
  • Replicating data from one region to another or between data centers in the same region

Key Features

  • Stateful and fault-tolerant data processing and querying over data streams and data at rest using SQL or dataflow API
  • A comprehensive library of connectors such as Kafka, Hadoop, S3, RDBMS, JMS and many more
  • Distributed messaging using pub-sub and queues
  • Distributed, partitioned, queryable key-value store with event listeners, which can also be used to store contextual data for enriching event streams with low latency
  • A production-ready Raft-implementation which allows lineralizable (CP) concurrency primitives such as distributed locks.
  • Tight integration for deploying machine learning models with Python to a data processing pipeline
  • Cloud-native, run everywhere architecture
  • Zero-downtime operations with rolling upgrades
  • At-least-once and exactly-once processing guarantees for stream processing pipelines
  • Data replication between data centers and geographic regions using WAN
  • Microsecond performance for key-value point lookups and pub-sub
  • Unique data processing architecture results in 99.99% latency of under 10ms for streaming queries with millions of events per second.
  • Client libraries in Java, Python, Node.js, .NET, C++ and Go

Operational Data Store

Hazelcast provides distributed in-memory data structures which are partitioned, replicated and queryable. One of the main use cases for Hazelcast is for storing a working set of data for fast querying and access.

The main data structure underlying Hazelcast, called IMap, is a key-value store which has a rich set of features, including:

Hazelcast stores data in partitions, which are distributed to all the nodes. You can increase the storage capacity by adding additional nodes, and if one of the nodes go down, the data is restored automatically from the backup replicas.

You can interact with maps using SQL or a programming language client of your choice. You can create and interact with a map as follows:

CREATE MAPPING myMap (name varchar EXTERNAL NAME "__key", age INT EXTERNAL NAME "this") 
TYPE IMap
OPTIONS ('keyFormat'='varchar','valueFormat'='int');
INSERT INTO myMap VALUES('Jake', 29);
SELECT * FROM myMap;

The same can be done programmatically as follows using one of the supported programming languages. Here are some exmaples in Java and Python:

var hz = HazelcastClient.newHazelcastClient();
IMap<String, Integer> map = hz.getMap("myMap");
map.set(Alice, 25);
import hazelcast

client = hazelcast.HazelcastClient()
my_map = client.get_map("myMap")
age = my_map.get("Alice").result()

Other programming languages supported are C#, C++, Node.js and Go.

Alternatively, you can ingest data directly from the many sources supported using SQL:

CREATE MAPPING csv_ages (name VARCHAR, age INT)
TYPE File
OPTIONS ('format'='csv',
    'path'='/data', 'glob'='data.csv');
SINK INTO myMap
SELECT name, age FROM csv_ages;

Hazelcast also provides additional data structures such as ReplicatedMap, Set, MultiMap and List. For a full list, refer to the distributed data structures section of the docs.

Stateful Data Processing

Hazelcast has a built-in data processing engine called Jet. Jet can be used to build both streaming and batch data pipelines that are elastic. You can use it to process large volumes of real-time events or huge batches of static datasets. To give a sense of scale, a single node of Hazelcast has been proven to aggregate 10 million events per second with latency under 10 milliseconds. A cluster of Hazelcast nodes can process billion events per second.

An application which aggregates millions of sensor readings per second with 10-millisecond resolution from Kafka looks like the following:

var hz = Hazelcast.bootstrappedInstance();

var p = Pipeline.create();

p.readFrom(KafkaSources.<String, Reading>kafka(kafkaProperties, "sensors"))
 .withTimestamps(event -> event.getValue().timestamp(), 10) // use event timestamp, allowed lag in ms
 .groupingKey(reading -> reading.sensorId())
 .window(sliding(1_000, 10)) // sliding window of 1s by 10ms
 .aggregate(averagingDouble(reading -> reading.temperature()))
 .writeTo(Sinks.logger());

hz.getJet().newJob(p).join();

Use the following command to deploy the application to the server:

bin/hazelcast submit analyze-sensors.jar

Jet supports advanced streaming features such as exactly-once processing and watermarks.

Data Processing using SQL

Jet also powers the SQL engine in Hazelcast which can execute both streaming and batch queries. Internally, all SQL queries are converted to Jet jobs.

CREATE MAPPING trades (
    id BIGINT,
    ticker VARCHAR,
    price DECIMAL,
    amount BIGINT)
TYPE Kafka
OPTIONS (
    'valueFormat' = 'json',
    'bootstrap.servers' = 'kafka:9092'
);
SELECT ticker, ROUND(price * 100) AS price_cents, amount
  FROM trades
  WHERE price * amount > 100;
+------------+----------------------+-------------------+
|ticker      |           price_cents|             amount|
+------------+----------------------+-------------------+
|EFGH        |                  1400|                 20|

Messaging

Hazelcast provides lightweight options for adding messaging to your application. The two main constructs for messaging are topics and queues.

Topics

Topics provide a publish-subscribe pattern where each message is fanned out to multiple subscribers. See the examples below in Java and Python:

var hz = Hazelcast.bootstrappedInstance();
ITopic<String> topic = hz.getTopic("my_topic");
topic.addMessageListener(msg -> System.out.println(msg));
topic.publish("message");
topic = client.get_topic("my_topic")

def handle_message(msg):
    print("Received message %s"  % msg.message)
topic.add_listener(on_message=handle_message)
topic.publish("my-message")

For examples in other languages, please refer to the docs.

Queues

Queues provide FIFO-semantics and you can add items from one client and remove from another. See the examples below in Java and Python:

var client = Hazelcast.newHazelcastClient();
IQueue<String> queue = client.getQueue("my_queue");
queue.put("new-item")
import hazelcast

client = hazelcast.HazelcastClient()
q = client.get_queue("my_queue")
my_item = q.take().result()
print("Received item %s" % my_item)

For examples in other languages, please refer to the docs.

Get Started

Follow the Getting Started Guide to install and start using Hazelcast.

Documentation

Read the documentation for in-depth details about how to install Hazelcast and an overview of the features.

Get Help

You can use Slack for getting help with Hazelcast

How to Contribute

Thanks for your interest in contributing! The easiest way is to just send a pull request. Have a look at the issues marked as good first issue for some guidance.

Building From Source

Building Hazelcast requires at minimum JDK 17. Pull the latest source from the repository and use Maven install (or package) to build:

$ git pull origin master
$ ./mvnw clean package -DskipTests

It is recommended to use the included Maven wrapper script. It is also possible to use local Maven distribution with the same version that is used in the Maven wrapper script.

Additionally, there is a quick build activated by setting the -Dquick system property that skips validation tasks for faster local builds (e.g. tests, checkstyle validation, javadoc, source plugins etc) and does not build extensions and distribution modules.

Testing

Take into account that the default build executes thousands of tests which may take a considerable amount of time. Hazelcast has 3 testing profiles:

  • Default:
    ./mvnw test

to run quick/integration tests (those can be run in parallel without using network by using -P parallelTest profile).

  • Slow Tests:
    ./mvnw test -P nightly-build

to run tests that are either slow or cannot be run in parallel.

  • All Tests:
    ./mvnw test -P all-tests

to run all tests serially using network.

Some tests require Docker to run. Set -Dhazelcast.disable.docker.tests system property to ignore them.

When developing a PR it is sufficient to run your new tests and some related subset of tests locally. Our PR builder will take care of running the full test suite.

Trigger Phrases in the Pull Request Conversation

When you create a pull request (PR), it must pass a build-and-test procedure. Maintainers will be notified about your PR, and they can trigger the build using special comments. These are the phrases you may see used in the comments on your PR:

  • run-lab-run - run the default PR builder
  • run-lts-compilers - compiles the sources with JDK 17 and JDK 21 (without running tests)
  • run-ee-compile - compile hazelcast-enterprise with this PR
  • run-ee-tests - run tests from hazelcast-enterprise with this PR
  • run-windows - run the tests on a Windows machine (HighFive is not supported here)
  • run-with-ibm-jdk-8 - run the tests with IBM JDK 8
  • run-cdc-debezium-tests - run all tests in the extensions/cdc-debezium module
  • run-cdc-mysql-tests - run all tests in the extensions/cdc-mysql module
  • run-cdc-postgres-tests - run all tests in the extensions/cdc-postgres module
  • run-mongodb-tests - run all tests in the extensions/mongodb module
  • run-s3-tests - run all tests in the extensions/s3 module
  • run-nightly-tests - run nightly (slow) tests. WARNING: Use with care as this is a resource consuming task.
  • run-ee-nightly-tests - run nightly (slow) tests from hazelcast-enterprise. WARNING: Use with care as this is a resource consuming task.
  • run-sql-only - run default tests in hazelcast-sql, hazelcast-distribution, and extensions/mapstore modules
  • run-docs-only - do not run any tests, check that only files with .md, .adoc or .txt suffix are added in the PR
  • run-sonar - run SonarCloud analysis
  • run-arm64 - run the tests on arm64 machine

Where not indicated, the builds run on a Linux machine with Oracle JDK 17.

Creating PRs for Hazelcast SQL

When creating a PR with changes located in the hazelcast-sql module and nowhere else, you can label your PR with SQL-only. This will change the standard PR builder to one that will only run tests related to SQL (see run-sql-only above), which will significantly shorten the build time vs. the default PR builder. NOTE: this job will fail if you've made changes anywhere other than hazelcast-sql.

Creating PRs which contain only documentation

When creating a PR which changes only documentation (files with suffix .md or .adoc) it makes no sense to run tests. For that case the label docs-only can be used. The job will fail in case you've made other changes than in .md, .adoc or .txt files.

License

Source code in this repository is covered by one of two licenses:

  1. Apache License 2.0
  2. Hazelcast Community License

The default license throughout the repository is Apache License 2.0 unless the header specifies another license.

Acknowledgments

Thanks to YourKit for supporting open source software by providing us a free license for their Java profiler.

We owe (the good parts of) our CLI tool's user experience to picocli.

Copyright

Copyright (c) 2008-2024, Hazelcast, Inc. All Rights Reserved.

Visit www.hazelcast.com for more info.

hazelcast-commandline-client's People

Contributors

angelasimms avatar feysahin avatar jackpgreen avatar jakescahill avatar kutluhanmetin avatar mehmettokgoz avatar mtyazici avatar nevzatseferoglu avatar oztasoi avatar pmcgleenon avatar rebekah-lawrence avatar serdaro avatar utku-caglayan avatar yuce avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hazelcast-commandline-client's Issues

Paste functionality does not work

On ubuntu 22.04 when I copy a multiline SQL string into the browser it does not show it properly:

To reproduce

hzc sql

and paste the following to the query textbox:

CREATE MAPPING my_map
TYPE IMap
OPTIONS (
    'keyFormat'='int',
    'valueFormat'='varchar'
)

If you start deleting some characters, you will notice that only the last line is shown in the textbox.

Another note: in terminator only the last line is shown. However, in ubuntu 22.04's builtin terminal application, it is worse: two lines are shown on top of each other somehow:
168760665-7712b03c-9768-4fb1-aebf-25457dc6b174
168760751-8dd70e9f-2316-4cd9-b593-267e9c2dd26d

Set Support

Implement support for Set.

If you would like the feature to be implemented, please add a 👍 to this issue. If you have specific needs regarding Set, feel free to drop a comment with more details.

Your feedback will drive the priority for implementation!

Hazelcast Command-Line Client (CLC) - map load exception

Hi Team,

We are loading a map using hazelcast clc and getting below exception.

com.hazelcast.internal.util.executor.HazelcastManagedThread.run(HazelcastManagedThread.java:102): Map XXXXXX is still loading data from external store.

clc -c config.yaml map get -n name --key-type string --timeout 20m.

We have a map which contains around 20GB of data. It is loading the map in the backend but we have a requirement to load multiple maps sequentially.

I have tried to add timeout but no luck.
Please let me know how to proceed on this.

ReplicatedMap Support

Implement support for ReplicatedMap.

If you would like the feature to be implemented, please add a 👍 to this issue. If you have specific needs regarding ReplicatedMap, feel free to drop a comment with more details.

Your feedback will drive the priority for implementation!

Topic Support

Implement support for Topic.

If you would like the feature to be implemented, please add a 👍 to this issue. If you have specific needs regarding Topic, feel free to drop a comment with more details.

Your feedback will drive the priority for implementation!

Verbose flag + interactive mode ends up with bad terminal experience

Verbose mode can ends up with missleading output with certain arguments in interactive mode.

For example,
./hazelcast-commandline-client --cluster-name=dev --verbose
It connects to cluster while printing logs to the standard output and also opens interactive mode. When cluster state change in denoted log level on cluster, logs are printed to the same shell session by racing with interactive mode. They overlaps with each other.
Screen Shot 2022-04-28 at 14 21 18

Disabling verbose output for interactive mode can be a solution ?

Reporting a vulnerability

Hello!

I hope you are doing well!

We are a security research team. Our tool automatically detected a vulnerability in this repository. We want to disclose it responsibly. GitHub has a feature called Private vulnerability reporting, which enables security research to privately disclose a vulnerability. Unfortunately, it is not enabled for this repository.

Can you enable it, so that we can report it?

Thanks in advance!

PS: you can read about how to enable private vulnerability reporting here: https://docs.github.com/en/code-security/security-advisories/repository-security-advisories/configuring-private-vulnerability-reporting-for-a-repository

DMT: Sometimes frontend reports ' ERROR No datastructures found to migrate' even though ds is in both the migration config and source cluster [CLC-421]

I haven't been able to consistently trigger this state, but in some situations the dmt will fail with an error: ERROR No datastructures found to migrate. However, a data structure will be listed in the provided migration config, and this ds also exists in the source cluster.

λ isaac-thinkpad hazelcast-enterprise-5.3.1-DM-SNAPSHOT-slim → bin/dmt_linux_amd64 --config migration.yaml start migration_config --yes

Hazelcast Data Migration Tool v5.3.0
(c) 2023 Hazelcast, Inc.

Selected data structures in the source cluster will be migrated to the target cluster.


    OK [1/2] Connected to the migration cluster.
    OK [2/2] Started the migration with ID: 61621be2-d43f-4782-aa1a-107a66d96fec.
 ERROR No datastructures found to migrate

One interesting note: when I start seeing this issue, it seems to only occur for a particular data structure name. If I change the name or add another ds in the imap_name.txt files, the issue no longer occurs. It seems like the issue occurs when their wasn't a ds listed in the config on a previous run (but this could just be coincidental).

migration cluster logs
########################################
# JAVA=/home/isaac/.jenv/versions/11/bin/java
# JAVA_OPTS=--add-modules java.se --add-exports java.base/jdk.internal.ref=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.management/sun.management=ALL-UNNAMED --add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED -Dhazelcast.logging.type=log4j2 -Dlog4j.configurationFile=file:/home/isaac/Desktop/hazelcast-enterprise-5.3.1-DM-SNAPSHOT-slim/config/log4j2.properties -Dhazelcast.config=/home/isaac/Desktop/hazelcast-enterprise-5.3.1-DM-SNAPSHOT-slim/config/hazelcast.xml -Djet.custom.lib.dir=/home/isaac/Desktop/hazelcast-enterprise-5.3.1-DM-SNAPSHOT-slim/custom-lib
# CLASSPATH=/home/isaac/Desktop/hazelcast-enterprise-5.3.1-DM-SNAPSHOT-slim/lib:/home/isaac/Desktop/hazelcast-enterprise-5.3.1-DM-SNAPSHOT-slim/lib/*:/home/isaac/Desktop/hazelcast-enterprise-5.3.1-DM-SNAPSHOT-slim/bin/user-lib:/home/isaac/Desktop/hazelcast-enterprise-5.3.1-DM-SNAPSHOT-slim/bin/user-lib/*
########################################
2023-10-24 08:31:23,783 [ WARN] [main] [c.h.i.i.HazelcastInstanceFactory]: WARNING: Classpath misconfiguration: found multiple META-INF/services/com.hazelcast.instance.impl.NodeExtension resources: jar:file:/home/isaac/Desktop/hazelcast-enterprise-5.3.1-DM-SNAPSHOT-slim/lib/hazelcast-enterprise-5.3.1-DM-SNAPSHOT.jar!/META-INF/services/com.hazelcast.instance.impl.NodeExtension, jar:file:/home/isaac/Desktop/hazelcast-enterprise-5.3.1-DM-SNAPSHOT-slim/lib/hazelcast-data-migration-service-5.3.1-DM-SNAPSHOT.jar!/META-INF/services/com.hazelcast.instance.impl.NodeExtension
2023-10-24 08:31:23,793 [ INFO] [main] [c.h.i.c.AbstractConfigLocator]: Loading configuration '/home/isaac/Desktop/hazelcast-enterprise-5.3.1-DM-SNAPSHOT-slim/config/hazelcast.xml' from System property 'hazelcast.config'
2023-10-24 08:31:23,794 [ INFO] [main] [c.h.i.c.AbstractConfigLocator]: Using configuration file at /home/isaac/Desktop/hazelcast-enterprise-5.3.1-DM-SNAPSHOT-slim/config/hazelcast.xml
2023-10-24 08:31:24,058 [ INFO] [main] [c.h.i.c.o.ExternalConfigurationOverride]: Detected external configuration entries in environment variables: [hazelcast.clustername=migration,hazelcast.network.port.port=5702,hazelcast.licensekey=XhM0i*********10910]
2023-10-24 08:31:24,087 [ INFO] [main] [c.h.i.AddressPicker]: [LOCAL] [migration] [5.3.1-DM-SNAPSHOT] Interfaces is enabled, trying to pick one address matching to one of: [127.0.0.1, 127.0.0.1]
2023-10-24 08:31:24,139 [ INFO] [main] [c.h.s.logo]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] 
        +       +  o    o     o     o---o o----o o      o---o     o     o----o o--o--o
        + +   + +  |    |    / \       /  |      |     /         / \    |         |   
        + + + + +  o----o   o   o     o   o----o |    o         o   o   o----o    |   
        + +   + +  |    |  /     \   /    |      |     \       /     \       |    |   
        +       +  o    o o       o o---o o----o o----o o---o o       o o----o    o   
2023-10-24 08:31:24,140 [ INFO] [main] [c.h.system]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] Copyright (c) 2008-2023, Hazelcast, Inc. All Rights Reserved.
2023-10-24 08:31:24,140 [ INFO] [main] [c.h.system]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] Hazelcast Enterprise 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) starting at [127.0.0.1]:5702
2023-10-24 08:31:24,142 [ INFO] [main] [c.h.system]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] Cluster name: migration
2023-10-24 08:31:24,142 [ INFO] [main] [c.h.system]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] Integrity Checker is disabled. Fail-fast on corrupted executables will not be performed. For more information, see the documentation for Integrity Checker.
2023-10-24 08:31:24,142 [ INFO] [main] [c.h.system]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] Jet is enabled
2023-10-24 08:31:24,143 [ INFO] [main] [c.h.i.i.NodeExtension]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] Checking Hazelcast Enterprise license...
2023-10-24 08:31:24,155 [ INFO] [main] [c.h.i.i.NodeExtension]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] License{allowedNumberOfNodes=9999, expiryDate=Dec/30/2099 23:59:59, featureList=[ Management Center, Streaming Management Center, Clustered JMX, Clustered REST, Security, WAN Replication, High Density Memory, Persistence, Streaming Lossless Cluster Restart, Rolling Upgrade, Streaming Job Upgrades, Cluster Client Filtering, CP Subsystem Persistence, Dynamic Configuration, Tiered Storage ], type=null, companyName=null, ownerEmail=null, keyHash=f/LQGMjwh3TUaWM6uhcc56Ev0KHfZWbxlrtm0G+GvIw=, No Version Restriction}
2023-10-24 08:31:24,310 [ INFO] [main] [c.h.i.t.TpcServerBootstrap]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] TPC: disabled
2023-10-24 08:31:24,347 [ INFO] [main] [c.h.e.w.i.WanThrottlingAcknowledger]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] Using throttling WAN acknowledgement strategy with pending invocation threshold 50000
2023-10-24 08:31:24,451 [ INFO] [main] [c.h.s.security]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] Enable DEBUG/FINE log level for log category com.hazelcast.system.security  or use -Dhazelcast.security.recommendations system property to see 🔒 security recommendations and the status of current config.
2023-10-24 08:31:24,504 [ INFO] [main] [c.h.i.i.Node]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] Using TCP/IP discovery
2023-10-24 08:31:24,505 [ WARN] [main] [c.h.c.CPSubsystem]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] CP Subsystem is not enabled. CP data structures will operate in UNSAFE mode! Please note that UNSAFE mode will not provide strong consistency guarantees.
2023-10-24 08:31:24,660 [ INFO] [main] [c.h.d.DataMigrationService]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] DataMigrationService init
2023-10-24 08:31:24,698 [ INFO] [main] [c.h.j.i.EnterpriseJetServiceBackend]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] Setting number of cooperative threads and default parallelism to 16
2023-10-24 08:31:24,748 [ INFO] [main] [c.h.i.d.Diagnostics]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] Diagnostics disabled. To enable add -Dhazelcast.diagnostics.enabled=true to the JVM arguments.
2023-10-24 08:31:24,752 [ INFO] [main] [c.h.c.LifecycleService]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] [127.0.0.1]:5702 is STARTING
2023-10-24 08:31:24,780 [ INFO] [hz.optimistic_kowalevski.cached.thread-4] [c.h.i.c.i.TcpIpJoiner]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] [127.0.0.1]:5703 is added to the blacklist.
2023-10-24 08:31:24,780 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.i.c.i.TcpIpJoiner]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] [127.0.0.1]:5704 is added to the blacklist.
2023-10-24 08:31:25,774 [ INFO] [main] [c.h.i.c.ClusterService]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] 

Members {size:1, ver:1} [
        Member [127.0.0.1]:5702 - 882a8eea-244b-4a88-a687-f6e9a02fd308 this
]

2023-10-24 08:31:25,782 [ INFO] [main] [c.h.j.i.EnterpriseJobCoordinationService]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] Jet started scanning for jobs
2023-10-24 08:31:25,788 [ INFO] [main] [c.h.c.LifecycleService]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] [127.0.0.1]:5702 is STARTED
2023-10-24 08:31:25,790 [ INFO] [hz.optimistic_kowalevski.cached.thread-3] [c.h.i.p.i.PartitionStateManager]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] Initializing cluster partition table arrangement...
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
2023-10-24 08:31:26,278 [ INFO] [hz.optimistic_kowalevski.cached.thread-2] [c.h.d.DataMigrationService]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] Mapping for __datamigration_migrations created
2023-10-24 08:31:44,899 [ INFO] [hz.optimistic_kowalevski.generic-operation.thread-0] [c.h.c.i.p.t.AuthenticationMessageTask]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] Received auth from Connection[id=1, /127.0.0.1:5702->/127.0.0.1:49772, qualifier=null, endpoint=[127.0.0.1]:49772, remoteUuid=c29e0103-c975-4a69-b232-af4d3ceda253, alive=true, connectionType=CLC, planeIndex=-1], successfully authenticated, clientUuid: c29e0103-c975-4a69-b232-af4d3ceda253, client name: isaac@isaac-thinkpad-1698150704, client version: v0.0.0-CUSTOMBUILD
2023-10-24 08:31:45,124 [ INFO] [hz.optimistic_kowalevski.cached.thread-3] [c.h.d.CommandQueueHandler]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] ITEM: {"migrationId":"21c1538c-b841-421c-87dc-93a686b229c2","configPath":"","source":[{"name":"hazelcast-client.yaml","content":"aGF6ZWxjYXN0LWNsaWVudDoKICBjbHVzdGVyLW5hbWU6IHNvdXJjZQogIG5ldHdvcms6CiAgICBjbHVzdGVyLW1lbWJlcnM6CiAgICAgIC0gMTI3LjAuMC4xOjU3MDEK"}],"target":[{"name":"hazelcast-client.yaml","content":"aGF6ZWxjYXN0LWNsaWVudDoKICBjbHVzdGVyLW5hbWU6IHRhcmdldAogIG5ldHdvcms6CiAgICBjbHVzdGVyLW1lbWJlcnM6CiAgICAgIC0gMTI3LjAuMC4xOjU5MDEK"}],"imaps":["my-map"],"replicatedMaps":[]}
2023-10-24 08:31:45,287 [ WARN] [hz.optimistic_kowalevski.cached.thread-3] [c.n.s.JsonMetaSchema]: Unknown keyword item - you should define your own Meta Schema. If the keyword is irrelevant for validation, just use a NonValidationKeyword
2023-10-24 08:31:45,319 [ INFO] [hz.optimistic_kowalevski.cached.thread-3] [c.h.d.CommandQueueHandler]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] Migration command: Migration{uuid='21c1538c-b841-421c-87dc-93a686b229c2', source=[ConfigFile{name='hazelcast-client.yaml', content='aGF6ZWxjYXN0LWNsaWVudDoKICBjbHVzdGVyLW5hbWU6IHNvdXJjZQogIG5ldHdvcms6CiAgICBjbHVzdGVyLW1lbWJlcnM6CiAgICAgIC0gMTI3LjAuMC4xOjU3MDEK'}], target=[ConfigFile{name='hazelcast-client.yaml', content='aGF6ZWxjYXN0LWNsaWVudDoKICBjbHVzdGVyLW5hbWU6IHRhcmdldAogIG5ldHdvcms6CiAgICBjbHVzdGVyLW1lbWJlcnM6CiAgICAgIC0gMTI3LjAuMC4xOjU5MDEK'}], imaps=[my-map], replicatedMaps=[]}
2023-10-24 08:31:45,364 [ WARN] [hz.optimistic_kowalevski.cached.thread-5] [c.n.s.JsonMetaSchema]: Unknown keyword describes - you should define your own Meta Schema. If the keyword is irrelevant for validation, just use a NonValidationKeyword
2023-10-24 08:31:45,755 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.i.s.ClientInvocationService]: hz.client_1 [target] [5.3.1-DM-SNAPSHOT] Running with 2 response threads, dynamic=true
2023-10-24 08:31:45,767 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.LifecycleService]: hz.client_1 [target] [5.3.1-DM-SNAPSHOT] HazelcastClient 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) is STARTING
2023-10-24 08:31:45,767 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.LifecycleService]: hz.client_1 [target] [5.3.1-DM-SNAPSHOT] HazelcastClient 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) is STARTED
2023-10-24 08:31:45,775 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.i.c.ClientConnectionManager]: hz.client_1 [target] [5.3.1-DM-SNAPSHOT] Trying to connect to cluster: target
2023-10-24 08:31:45,777 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.i.c.ClientConnectionManager]: hz.client_1 [target] [5.3.1-DM-SNAPSHOT] Trying to connect to [127.0.0.1]:5901
2023-10-24 08:31:45,787 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.LifecycleService]: hz.client_1 [target] [5.3.1-DM-SNAPSHOT] HazelcastClient 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) is CLIENT_CONNECTED
2023-10-24 08:31:45,787 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.i.c.ClientConnectionManager]: hz.client_1 [target] [5.3.1-DM-SNAPSHOT] Authenticated with server [172.17.0.3]:5901:8b5392d7-7789-4b43-87dc-80351582c211, server version: 5.3.2-SNAPSHOT, local address: /127.0.0.1:39159
2023-10-24 08:31:45,788 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.i.d.Diagnostics]: hz.client_1 [target] [5.3.1-DM-SNAPSHOT] Diagnostics disabled. To enable add -Dhazelcast.diagnostics.enabled=true to the JVM arguments.
2023-10-24 08:31:45,792 [ INFO] [hz.optimistic_kowalevski.HealthMonitor] [c.h.i.d.HealthMonitor]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] processors=16, physical.memory.total=31.0G, physical.memory.free=7.2G, swap.space.total=2.0G, swap.space.free=2.0G, heap.memory.used=63.9M, heap.memory.free=535.5M, heap.memory.total=600.0M, heap.memory.max=7.7G, heap.memory.used/total=10.65%, heap.memory.used/max=0.81%, minor.gc.count=5, minor.gc.time=27ms, major.gc.count=0, major.gc.time=0ms, load.process=77.53%, load.system=80.63%, load.systemAverage=0.29, thread.count=115, thread.peakCount=115, cluster.timeDiff=0, event.q.size=0, executor.q.async.size=0, executor.q.client.size=0, executor.q.client.query.size=0, executor.q.client.blocking.size=0, executor.q.query.size=0, executor.q.scheduled.size=0, executor.q.io.size=0, executor.q.system.size=0, executor.q.operations.size=0, executor.q.priorityOperation.size=0, operations.completed.count=515, executor.q.mapLoad.size=0, executor.q.mapLoadAllKeys.size=0, executor.q.cluster.size=0, executor.q.response.size=0, operations.running.count=0, operations.pending.invocations.percentage=0.00%, operations.pending.invocations.count=0, proxy.count=9, clientEndpoint.count=1, connection.active.count=1, client.connection.count=1, connection.count=1
2023-10-24 08:31:45,793 [ INFO] [hz.client_1.event-10] [c.h.c.i.s.ClientClusterService]: hz.client_1 [target] [5.3.1-DM-SNAPSHOT] 

Members [1] {
        Member [172.17.0.3]:5901 - 8b5392d7-7789-4b43-87dc-80351582c211
}

2023-10-24 08:31:45,819 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.i.s.ClientStatisticsService]: Client statistics is enabled with period 5 seconds.
2023-10-24 08:31:45,822 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.d.MigrationRunner]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] Successfully checked that the target cluster is enterprise.
2023-10-24 08:31:45,829 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.i.s.ClientInvocationService]: hz.client_2 [source] [5.3.1-DM-SNAPSHOT] Running with 2 response threads, dynamic=true
2023-10-24 08:31:45,830 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.LifecycleService]: hz.client_2 [source] [5.3.1-DM-SNAPSHOT] HazelcastClient 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) is STARTING
2023-10-24 08:31:45,831 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.LifecycleService]: hz.client_2 [source] [5.3.1-DM-SNAPSHOT] HazelcastClient 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) is STARTED
2023-10-24 08:31:45,833 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.i.c.ClientConnectionManager]: hz.client_2 [source] [5.3.1-DM-SNAPSHOT] Trying to connect to cluster: source
2023-10-24 08:31:45,833 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.i.c.ClientConnectionManager]: hz.client_2 [source] [5.3.1-DM-SNAPSHOT] Trying to connect to [127.0.0.1]:5701
2023-10-24 08:31:45,835 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.LifecycleService]: hz.client_2 [source] [5.3.1-DM-SNAPSHOT] HazelcastClient 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) is CLIENT_CONNECTED
2023-10-24 08:31:45,836 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.i.c.ClientConnectionManager]: hz.client_2 [source] [5.3.1-DM-SNAPSHOT] Authenticated with server [172.17.0.2]:5701:4bd391ec-c5bd-43bc-8132-8f2f46d3c95a, server version: 4.2.7, local address: /127.0.0.1:57625
2023-10-24 08:31:45,836 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.i.d.Diagnostics]: hz.client_2 [source] [5.3.1-DM-SNAPSHOT] Diagnostics disabled. To enable add -Dhazelcast.diagnostics.enabled=true to the JVM arguments.
2023-10-24 08:31:45,837 [ INFO] [hz.client_2.event-11] [c.h.c.i.s.ClientClusterService]: hz.client_2 [source] [5.3.1-DM-SNAPSHOT] 

Members [1] {
        Member [172.17.0.2]:5701 - 4bd391ec-c5bd-43bc-8132-8f2f46d3c95a
}

2023-10-24 08:31:45,844 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.i.s.ClientStatisticsService]: Client statistics is enabled with period 5 seconds.
2023-10-24 08:31:45,927 [ INFO] [hz.optimistic_kowalevski.IO.thread-in-1] [c.h.i.s.t.TcpServerConnection]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] Connection[id=1, /127.0.0.1:5702->/127.0.0.1:49772, qualifier=null, endpoint=[127.0.0.1]:49772, remoteUuid=c29e0103-c975-4a69-b232-af4d3ceda253, alive=false, connectionType=CLC, planeIndex=-1] closed. Reason: Connection closed by the other side
2023-10-24 08:31:45,929 [ INFO] [hz.optimistic_kowalevski.event-3] [c.h.c.i.ClientEndpointManager]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] Destroying ClientEndpoint{connection=Connection[id=1, /127.0.0.1:5702->/127.0.0.1:49772, qualifier=null, endpoint=[127.0.0.1]:49772, remoteUuid=c29e0103-c975-4a69-b232-af4d3ceda253, alive=false, connectionType=CLC, planeIndex=-1], clientUuid=c29e0103-c975-4a69-b232-af4d3ceda253, clientName=isaac@isaac-thinkpad-1698150704, authenticated=true, clientVersion=v0.0.0-CUSTOMBUILD, creationTime=1698150704895, latest clientAttributes=null, labels=[User:isaac@isaac-thinkpad, CLC]}
2023-10-24 08:31:46,861 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.LifecycleService]: hz.client_2 [source] [5.3.1-DM-SNAPSHOT] HazelcastClient 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) is SHUTTING_DOWN
2023-10-24 08:31:46,866 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.i.c.ClientConnectionManager]: hz.client_2 [source] [5.3.1-DM-SNAPSHOT] Removed connection to endpoint: [172.17.0.2]:5701:4bd391ec-c5bd-43bc-8132-8f2f46d3c95a, connection: ClientConnection{alive=false, connectionId=1, channel=NioChannel{/127.0.0.1:57625->/127.0.0.1:5701}, remoteAddress=[172.17.0.2]:5701, lastReadTime=2023-10-24 08:31:45.850, lastWriteTime=2023-10-24 08:31:45.850, closedTime=2023-10-24 08:31:46.863}
2023-10-24 08:31:46,867 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.LifecycleService]: hz.client_2 [source] [5.3.1-DM-SNAPSHOT] HazelcastClient 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) is CLIENT_DISCONNECTED
2023-10-24 08:31:46,872 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.LifecycleService]: hz.client_2 [source] [5.3.1-DM-SNAPSHOT] HazelcastClient 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) is SHUTDOWN
2023-10-24 08:31:46,877 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.LifecycleService]: hz.client_1 [target] [5.3.1-DM-SNAPSHOT] HazelcastClient 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) is SHUTTING_DOWN
2023-10-24 08:31:46,878 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.i.c.ClientConnectionManager]: hz.client_1 [target] [5.3.1-DM-SNAPSHOT] Removed connection to endpoint: [172.17.0.3]:5901:8b5392d7-7789-4b43-87dc-80351582c211, connection: ClientConnection{alive=false, connectionId=1, channel=NioChannel{/127.0.0.1:39159->/127.0.0.1:5901}, remoteAddress=[172.17.0.3]:5901, lastReadTime=2023-10-24 08:31:45.854, lastWriteTime=2023-10-24 08:31:45.854, closedTime=2023-10-24 08:31:46.877}
2023-10-24 08:31:46,879 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.LifecycleService]: hz.client_1 [target] [5.3.1-DM-SNAPSHOT] HazelcastClient 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) is CLIENT_DISCONNECTED
2023-10-24 08:31:46,881 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.LifecycleService]: hz.client_1 [target] [5.3.1-DM-SNAPSHOT] HazelcastClient 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) is SHUTDOWN
2023-10-24 08:32:56,076 [ INFO] [hz.optimistic_kowalevski.generic-operation.thread-1] [c.h.c.i.p.t.AuthenticationMessageTask]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] Received auth from Connection[id=2, /127.0.0.1:5702->/127.0.0.1:48620, qualifier=null, endpoint=[127.0.0.1]:48620, remoteUuid=bce76004-13ca-46b3-ae4a-4fd8efc65abf, alive=true, connectionType=CLC, planeIndex=-1], successfully authenticated, clientUuid: bce76004-13ca-46b3-ae4a-4fd8efc65abf, client name: isaac@isaac-thinkpad-1698150776, client version: v0.0.0-CUSTOMBUILD
2023-10-24 08:32:56,319 [ INFO] [hz.optimistic_kowalevski.cached.thread-3] [c.h.d.CommandQueueHandler]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] ITEM: {"migrationId":"61621be2-d43f-4782-aa1a-107a66d96fec","configPath":"","source":[{"name":"hazelcast-client.yaml","content":"aGF6ZWxjYXN0LWNsaWVudDoKICBjbHVzdGVyLW5hbWU6IHNvdXJjZQogIG5ldHdvcms6CiAgICBjbHVzdGVyLW1lbWJlcnM6CiAgICAgIC0gMTI3LjAuMC4xOjU3MDEK"}],"target":[{"name":"hazelcast-client.yaml","content":"aGF6ZWxjYXN0LWNsaWVudDoKICBjbHVzdGVyLW5hbWU6IHRhcmdldAogIG5ldHdvcms6CiAgICBjbHVzdGVyLW1lbWJlcnM6CiAgICAgIC0gMTI3LjAuMC4xOjU5MDEK"}],"imaps":["my-map"],"replicatedMaps":[]}
2023-10-24 08:32:56,320 [ INFO] [hz.optimistic_kowalevski.cached.thread-3] [c.h.d.CommandQueueHandler]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] Migration command: Migration{uuid='61621be2-d43f-4782-aa1a-107a66d96fec', source=[ConfigFile{name='hazelcast-client.yaml', content='aGF6ZWxjYXN0LWNsaWVudDoKICBjbHVzdGVyLW5hbWU6IHNvdXJjZQogIG5ldHdvcms6CiAgICBjbHVzdGVyLW1lbWJlcnM6CiAgICAgIC0gMTI3LjAuMC4xOjU3MDEK'}], target=[ConfigFile{name='hazelcast-client.yaml', content='aGF6ZWxjYXN0LWNsaWVudDoKICBjbHVzdGVyLW5hbWU6IHRhcmdldAogIG5ldHdvcms6CiAgICBjbHVzdGVyLW1lbWJlcnM6CiAgICAgIC0gMTI3LjAuMC4xOjU5MDEK'}], imaps=[my-map], replicatedMaps=[]}
2023-10-24 08:32:56,382 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.i.s.ClientInvocationService]: hz.client_3 [target] [5.3.1-DM-SNAPSHOT] Running with 2 response threads, dynamic=true
2023-10-24 08:32:56,383 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.LifecycleService]: hz.client_3 [target] [5.3.1-DM-SNAPSHOT] HazelcastClient 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) is STARTING
2023-10-24 08:32:56,383 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.LifecycleService]: hz.client_3 [target] [5.3.1-DM-SNAPSHOT] HazelcastClient 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) is STARTED
2023-10-24 08:32:56,386 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.i.c.ClientConnectionManager]: hz.client_3 [target] [5.3.1-DM-SNAPSHOT] Trying to connect to cluster: target
2023-10-24 08:32:56,386 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.i.c.ClientConnectionManager]: hz.client_3 [target] [5.3.1-DM-SNAPSHOT] Trying to connect to [127.0.0.1]:5901
2023-10-24 08:32:56,389 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.LifecycleService]: hz.client_3 [target] [5.3.1-DM-SNAPSHOT] HazelcastClient 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) is CLIENT_CONNECTED
2023-10-24 08:32:56,389 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.i.c.ClientConnectionManager]: hz.client_3 [target] [5.3.1-DM-SNAPSHOT] Authenticated with server [172.17.0.3]:5901:3d99a7e5-6c05-48f6-84d0-3a22c04855d8, server version: 5.3.2-SNAPSHOT, local address: /127.0.0.1:51753
2023-10-24 08:32:56,389 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.i.d.Diagnostics]: hz.client_3 [target] [5.3.1-DM-SNAPSHOT] Diagnostics disabled. To enable add -Dhazelcast.diagnostics.enabled=true to the JVM arguments.
2023-10-24 08:32:56,390 [ INFO] [hz.client_3.event-19] [c.h.c.i.s.ClientClusterService]: hz.client_3 [target] [5.3.1-DM-SNAPSHOT] 

Members [1] {
        Member [172.17.0.3]:5901 - 3d99a7e5-6c05-48f6-84d0-3a22c04855d8
}

2023-10-24 08:32:56,392 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.i.s.ClientStatisticsService]: Client statistics is enabled with period 5 seconds.
2023-10-24 08:32:56,393 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.d.MigrationRunner]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] Successfully checked that the target cluster is enterprise.
2023-10-24 08:32:56,398 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.i.s.ClientInvocationService]: hz.client_4 [source] [5.3.1-DM-SNAPSHOT] Running with 2 response threads, dynamic=true
2023-10-24 08:32:56,399 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.LifecycleService]: hz.client_4 [source] [5.3.1-DM-SNAPSHOT] HazelcastClient 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) is STARTING
2023-10-24 08:32:56,400 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.LifecycleService]: hz.client_4 [source] [5.3.1-DM-SNAPSHOT] HazelcastClient 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) is STARTED
2023-10-24 08:32:56,403 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.i.c.ClientConnectionManager]: hz.client_4 [source] [5.3.1-DM-SNAPSHOT] Trying to connect to cluster: source
2023-10-24 08:32:56,403 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.i.c.ClientConnectionManager]: hz.client_4 [source] [5.3.1-DM-SNAPSHOT] Trying to connect to [127.0.0.1]:5701
2023-10-24 08:32:56,405 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.LifecycleService]: hz.client_4 [source] [5.3.1-DM-SNAPSHOT] HazelcastClient 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) is CLIENT_CONNECTED
2023-10-24 08:32:56,405 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.i.c.ClientConnectionManager]: hz.client_4 [source] [5.3.1-DM-SNAPSHOT] Authenticated with server [172.17.0.2]:5701:4bd391ec-c5bd-43bc-8132-8f2f46d3c95a, server version: 4.2.7, local address: /127.0.0.1:50047
2023-10-24 08:32:56,406 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.i.d.Diagnostics]: hz.client_4 [source] [5.3.1-DM-SNAPSHOT] Diagnostics disabled. To enable add -Dhazelcast.diagnostics.enabled=true to the JVM arguments.
2023-10-24 08:32:56,406 [ INFO] [hz.client_4.event-25] [c.h.c.i.s.ClientClusterService]: hz.client_4 [source] [5.3.1-DM-SNAPSHOT] 

Members [1] {
        Member [172.17.0.2]:5701 - 4bd391ec-c5bd-43bc-8132-8f2f46d3c95a
}

2023-10-24 08:32:56,408 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.i.s.ClientStatisticsService]: Client statistics is enabled with period 5 seconds.
2023-10-24 08:32:56,480 [ INFO] [hz.optimistic_kowalevski.IO.thread-in-2] [c.h.i.s.t.TcpServerConnection]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] Connection[id=2, /127.0.0.1:5702->/127.0.0.1:48620, qualifier=null, endpoint=[127.0.0.1]:48620, remoteUuid=bce76004-13ca-46b3-ae4a-4fd8efc65abf, alive=false, connectionType=CLC, planeIndex=-1] closed. Reason: Connection closed by the other side
2023-10-24 08:32:56,482 [ INFO] [hz.optimistic_kowalevski.event-1] [c.h.c.i.ClientEndpointManager]: [127.0.0.1]:5702 [migration] [5.3.1-DM-SNAPSHOT] Destroying ClientEndpoint{connection=Connection[id=2, /127.0.0.1:5702->/127.0.0.1:48620, qualifier=null, endpoint=[127.0.0.1]:48620, remoteUuid=bce76004-13ca-46b3-ae4a-4fd8efc65abf, alive=false, connectionType=CLC, planeIndex=-1], clientUuid=bce76004-13ca-46b3-ae4a-4fd8efc65abf, clientName=isaac@isaac-thinkpad-1698150776, authenticated=true, clientVersion=v0.0.0-CUSTOMBUILD, creationTime=1698150776075, latest clientAttributes=null, labels=[User:isaac@isaac-thinkpad, CLC]}
2023-10-24 08:32:57,352 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.LifecycleService]: hz.client_4 [source] [5.3.1-DM-SNAPSHOT] HazelcastClient 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) is SHUTTING_DOWN
2023-10-24 08:32:57,355 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.i.c.ClientConnectionManager]: hz.client_4 [source] [5.3.1-DM-SNAPSHOT] Removed connection to endpoint: [172.17.0.2]:5701:4bd391ec-c5bd-43bc-8132-8f2f46d3c95a, connection: ClientConnection{alive=false, connectionId=1, channel=NioChannel{/127.0.0.1:50047->/127.0.0.1:5701}, remoteAddress=[172.17.0.2]:5701, lastReadTime=2023-10-24 08:32:56.413, lastWriteTime=2023-10-24 08:32:56.413, closedTime=2023-10-24 08:32:57.353}
2023-10-24 08:32:57,355 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.LifecycleService]: hz.client_4 [source] [5.3.1-DM-SNAPSHOT] HazelcastClient 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) is CLIENT_DISCONNECTED
2023-10-24 08:32:57,359 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.LifecycleService]: hz.client_4 [source] [5.3.1-DM-SNAPSHOT] HazelcastClient 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) is SHUTDOWN
2023-10-24 08:32:57,362 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.LifecycleService]: hz.client_3 [target] [5.3.1-DM-SNAPSHOT] HazelcastClient 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) is SHUTTING_DOWN
2023-10-24 08:32:57,363 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.i.c.ClientConnectionManager]: hz.client_3 [target] [5.3.1-DM-SNAPSHOT] Removed connection to endpoint: [172.17.0.3]:5901:3d99a7e5-6c05-48f6-84d0-3a22c04855d8, connection: ClientConnection{alive=false, connectionId=1, channel=NioChannel{/127.0.0.1:51753->/127.0.0.1:5901}, remoteAddress=[172.17.0.3]:5901, lastReadTime=2023-10-24 08:32:56.414, lastWriteTime=2023-10-24 08:32:56.414, closedTime=2023-10-24 08:32:57.362}
2023-10-24 08:32:57,363 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.LifecycleService]: hz.client_3 [target] [5.3.1-DM-SNAPSHOT] HazelcastClient 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) is CLIENT_DISCONNECTED
2023-10-24 08:32:57,365 [ INFO] [hz.optimistic_kowalevski.cached.thread-5] [c.h.c.LifecycleService]: hz.client_3 [target] [5.3.1-DM-SNAPSHOT] HazelcastClient 5.3.1-DM-SNAPSHOT (20231023 - 36ab9a0, e335fe4) is SHUTDOWN

DMT: dmt command hangs when unable to connect w/ the migration cluster [CLC-431]

If given a bad config for the migration cluster or if the migration cluster is unavailable, the dmt command will hang indefinitely.

To reproduce: Without starting any cluster, simply run the following command (where migration.yaml is a valid clc client config): ./bin/dmt --config migration.yaml start migration_config --yes

Cannot terminate the process

  1. Start a local member on localhost:5701
  2. Execute hzc sql -a 127.0.0.1:5702 to try to connect to a non-existent member.

The logs are flooded with error messages and Ctrl + C does not work to terminate the process. I had to force close the Terminal window.

DMT: Migration report is printed on single line [CLC-420]

The report generated after a migration has either completed or failed is written on a single line in the resulting text file. The "\n\n" characters are printed literally in the file.

Example:

"Report for migration id=286ab45e-e0d7-4a5a-b5be-4df743c9bbc1\n\nStarted time: 2023-10-23T18:59:06.887555Z\n\nStatus: Completed\nCompleted time: 2023-10-23T14:59:07.730024-04:00\n\nThe migration of the following data structures was completed:\n\nIMap:\n- my-map2 (100 entries total) time 0h 0m 0s\n\nThe migration of the following data structures was canceled:\n\nThe migration of the following data structures was failed:\n\nThe migration of the following data structures was not started:\n\n"

This can be reproduced by following the instructions in the README included in the DMT package. These steps are:

  1. docker run -p 127.0.0.1:5701:5701 -e HZ_CLUSTERNAME=source hazelcast/hazelcast:4.2.7
  2. for i in {1..1000}; do clc -c source.yaml map --name my-map set key-$i value-$i --quiet; done && echo OK
  3. docker run -e HZ_NETWORK_PORT_PORT=5901 -p 127.0.0.1:5901:5901 -e HZ_LICENSEKEY="yourlicensekey" -e HZ_CLUSTERNAME=target hazelcast/hazelcast-enterprise:5.3.2-SNAPSHOT-slim
  4. HZ_NETWORK_PORT_PORT=5702 HZ_CLUSTERNAME=migration ./bin/hz start
  5. ./bin/dmt_[platform]_[arch] --config migration.yaml start migration_config --yes

Check the generated migration_report_*.txt file.

Help message is inconsistent

sn__mek_z_2022-02-14_15-57-41
We should be consistent with these messages. For example:

  • In "Available Commands" section, some explanations start with an uppercase where most not. (Prefer all first letters to be uppercase)
  • In "Flags" section, some sentences and with a period and some don't. (Prefer no period)
  • replicatedmap is not easy to read in help text. Let's change it to ReplicatedMap. Similarly we should change for Multimap too.

Also this image is only for help command. We should check other commands for this as well. (map get help for example)

"option" and "left-right arrow" key pairs does not work [API-1562]

When the user wants to scroll through words in the commandline with option+arrow, commanline does not allow this.

Reproducer:
(computer-> macOS version: 11.6.7)
To change the address by going to the beginning of the address in terminal, this case happened:
I entered this command: hzc localhost:5701@dev> sql -a 127.0.0.1:5701
Secondly, after used "option + left-arrow" key pair (3 times) and "option + right-arrow" key pair (1 time), I get this on my terminal:
hhzhzchzc localhost:5701@dev> sql -a 127.0.0.1:5701?f?f?f?b

Arrow keys don't work in the no color mode [API-1969]

To reproduce, start CLC in the no color mode:

$ NO_COLOR=1 clc

Then run some query:

CLC> select * from project;

Press up arrow to activate the previous command and then press left arrow, which is supposed to move the cursor to the right-most character. Instead of that the cursor is moved to the beginning of the line, which makes it impossible to edit the current line.

DMT Issue: Add "the migration is starting" step [CLC-282]

I think we don't have a step about waiting the migration to start in the backend in the "start" command.

We connect to the migration cluster and then wait for the migration status to be reported on the migration status map. However, the migration may not be started in cases like:

  1. Migration cluster is not a migration cluster, but a regular vanilla cluster. Or migration service failed to start somehow.
  2. The migration service fails to parse the start command payload. It can be due to malformed json or some validation error.

In such cases, we won't create/write to status map, causing DMT to hang forever.

We should have a "starting migration..." step which will be completed when DMT sees an entry with the correct migration id in the "migrations in progress IList". This step should have a timeout not to hang indefinitely.

related jira:

https://hazelcast.atlassian.net/browse/HZ-2886
https://hazelcast.atlassian.net/browse/HZ-2887

List Support

Implement support for List.

If you would like the feature to be implemented, please add a 👍 to this issue. If you have specific needs regarding List, feel free to drop a comment with more details.

Your feedback will drive the priority for implementation!

Previous SQL queries remain in the prompt

When using the SQL prompt (hzc sql), the previous query remains even after you execute it with ^E. As a user, you need to manually delete the previous command before entering another one, otherwise you get an error because you cannot execute two queries at once.

Use Viridian discovery URL by default [API-1556]

Viridian clusters use the following discovery URL: https://api.viridian.hazelcast.com

However this is not the default, so users need to set the HZ_CLOUD_COORDINATOR_BASE_URL environment variable as an extra step in order to connect to Viridian clusters.

We should use this discovery URL as the default because the Hazelcast CLC is a new product and does not need to support legacy cloud clusters by default.

Can't disable/switch from Interactive mode [API-1477]

Hi,

I'm running Ubuntu on Windows.

I can enable interactive mode from the bash: hzc # but I can't disable it. I've tried CTRL + C, exit, complete shutdown, renaming my bash profile... I've also tried switching to SQL mode.

Dates in SQL results should be displayed properly [API-1515]

With this mapping:

    CREATE OR REPLACE MAPPING stocks (
        __key INT,
        transferred_at DATE,
        transfer VARCHAR,
        symbol VARCHAR,
        quantity DOUBLE,
        price DOUBLE
    )
    TYPE IMap
    OPTIONS (
      'keyFormat' = 'int',
      'valueFormat' = 'json-flat'
    )

And data:

INSERT INTO stocks VALUES(1, CAST('2006-03-28' AS DATE), 'BUY', 'IBM', 1000, 45.0)
INSERT INTO stocks VALUES(2, CAST('2006-04-05' AS DATE), 'BUY', 'MSFT', 1000, 72.0)
INSERT INTO stocks VALUES(3, CAST('2006-04-06' AS DATE), 'SELL', 'IBM', 500, 53.0)
./hzc sql 'select * from stocks'
+-----------------------------------------------------------------------------------------------------+
|      __key     | transferred_at |    transfer    |     symbol     |    quantity    |      price     |
+-----------------------------------------------------------------------------------------------------+
| 2              | {0 63279781... | BUY            | MSFT           | 1000           | 72             |
| 1              | {0 63279090... | BUY            | IBM            | 1000           | 45             |
| 3              | {0 63279867... | SELL           | IBM            | 500            | 53             |

MultiMap Support

Implement support for MultiMap.

If you would like the feature to be implemented, please add a 👍 to this issue. If you have specific needs regarding MultiMap, feel free to drop a comment with more details.

Your feedback will drive the priority for implementation!

DMT: The migration prechecks that trigger a 'FAILED' status in the migration cluster, don't get reflected in the frontend [CLC-418]

Given a migration w/ status: 'FAILED' due to some pre-check (i.e. no IMap in source that's listed in migration config), a warning log is written from the migration cluster, but no error is shown in DMT frontend and it does not exit (spins on step '2/2' indefinitely).

To reproduce:

Follow the README instruction included in the DMT package, but do not add any data structure to the source cluster. That is:

  1. docker run -p 127.0.0.1:5701:5701 -e HZ_CLUSTERNAME=source hazelcast/hazelcast:4.2.7
  2. docker run -e HZ_NETWORK_PORT_PORT=5901 -p 127.0.0.1:5901:5901 -e HZ_LICENSEKEY="yourlicensekey" -e HZ_CLUSTERNAME=target hazelcast/hazelcast-enterprise:5.3.2-SNAPSHOT-slim
  3. HZ_NETWORK_PORT_PORT=5702 HZ_CLUSTERNAME=migration ./bin/hz start
  4. ./bin/dmt_[platform]_[arch] --config migration.yaml start migration_config --yes

Queue Support

Implement support for Queue.

If you would like the feature to be implemented, please add a 👍 to this issue. If you have specific needs regarding Queue, feel free to drop a comment with more details.

Your feedback will drive the priority for implementation!

Invalid commands are silently ignored

When I enter an invalid command with ./hzc or sql, it keeps running without even a warning. This might mislead the user.

Reproducer:

  • I enter ./hzc -deneme, and I can connect to the cluster without any warning about the invalid string "deneme".

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.