You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by pt...@apache.org on 2021/12/27 16:53:58 UTC
[ignite-3] branch main updated: IGNITE-16117 Thin client: Convert async exceptions in sync APIs (#525)
This is an automated email from the ASF dual-hosted git repository.
ptupitsyn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new ca29c42 IGNITE-16117 Thin client: Convert async exceptions in sync APIs (#525)
ca29c42 is described below
commit ca29c426e742c221c7eb961b2520d26d3a33ef43
Author: Pavel Tupitsyn <pt...@apache.org>
AuthorDate: Mon Dec 27 19:53:52 2021 +0300
IGNITE-16117 Thin client: Convert async exceptions in sync APIs (#525)
---
.../org/apache/ignite/client/IgniteClient.java | 3 +-
.../apache/ignite/internal/client/ClientUtils.java | 62 ++++++++++++++++++++++
.../client/table/ClientKeyValueBinaryView.java | 30 ++++++-----
.../internal/client/table/ClientKeyValueView.java | 29 +++++-----
.../client/table/ClientRecordBinaryView.java | 32 +++++------
.../internal/client/table/ClientRecordView.java | 32 +++++------
.../ignite/internal/client/table/ClientTables.java | 12 +++--
.../internal/client/tx/ClientTransaction.java | 6 ++-
.../internal/client/tx/ClientTransactions.java | 4 +-
.../client/ClientKeyValueBinaryViewTest.java | 3 +-
.../ignite/client/ClientKeyValueViewTest.java | 6 +--
.../apache/ignite/client/ClientRecordViewTest.java | 6 +--
.../org/apache/ignite/client/ClientTableTest.java | 7 ++-
.../org/apache/ignite/client/ReconnectTest.java | 5 +-
.../app/client/ItThinClientTransactionsTest.java | 14 +++--
15 files changed, 159 insertions(+), 92 deletions(-)
diff --git a/modules/client/src/main/java/org/apache/ignite/client/IgniteClient.java b/modules/client/src/main/java/org/apache/ignite/client/IgniteClient.java
index 503c0ce..034976b 100644
--- a/modules/client/src/main/java/org/apache/ignite/client/IgniteClient.java
+++ b/modules/client/src/main/java/org/apache/ignite/client/IgniteClient.java
@@ -21,6 +21,7 @@ import static org.apache.ignite.client.IgniteClientConfiguration.DFLT_CONNECT_TI
import static org.apache.ignite.client.IgniteClientConfiguration.DFLT_RECONNECT_THROTTLING_PERIOD;
import static org.apache.ignite.client.IgniteClientConfiguration.DFLT_RECONNECT_THROTTLING_RETRIES;
import static org.apache.ignite.client.IgniteClientConfiguration.DFLT_RETRY_LIMIT;
+import static org.apache.ignite.internal.client.ClientUtils.sync;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;
@@ -171,7 +172,7 @@ public interface IgniteClient extends Ignite {
* @return Ignite client.
*/
public IgniteClient build() {
- return buildAsync().join();
+ return sync(buildAsync());
}
/**
diff --git a/modules/client/src/main/java/org/apache/ignite/internal/client/ClientUtils.java b/modules/client/src/main/java/org/apache/ignite/internal/client/ClientUtils.java
new file mode 100644
index 0000000..562c9ba
--- /dev/null
+++ b/modules/client/src/main/java/org/apache/ignite/internal/client/ClientUtils.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.client;
+
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+import org.apache.ignite.client.IgniteClientException;
+import org.apache.ignite.lang.IgniteException;
+
+/**
+ * Client utilities.
+ */
+public class ClientUtils {
+ /**
+ * Waits for async operation completion.
+ *
+ * @param fut Future to wait to.
+ * @param <T> Future result type.
+ * @return Future result.
+ */
+ public static <T> T sync(CompletableFuture<T> fut) {
+ try {
+ return fut.get();
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt(); // Restore interrupt flag.
+
+ throw convertException(e);
+ } catch (ExecutionException e) {
+ throw convertException(e.getCause());
+ }
+ }
+
+ /**
+ * Converts an internal exception to a public one.
+ *
+ * @param e Internal exception.
+ * @return Public exception.
+ */
+ public static IgniteException convertException(Throwable e) {
+ if (e instanceof IgniteException) {
+ return (IgniteException) e;
+ }
+
+ //TODO: IGNITE-14500 Replace with public exception with an error code (or unwrap?).
+ return new IgniteClientException(e.getMessage(), e);
+ }
+}
diff --git a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientKeyValueBinaryView.java b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientKeyValueBinaryView.java
index 4b19ec5..c39c7ff 100644
--- a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientKeyValueBinaryView.java
+++ b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientKeyValueBinaryView.java
@@ -17,6 +17,8 @@
package org.apache.ignite.internal.client.table;
+import static org.apache.ignite.internal.client.ClientUtils.sync;
+
import java.io.Serializable;
import java.util.Collection;
import java.util.Collections;
@@ -57,7 +59,7 @@ public class ClientKeyValueBinaryView implements KeyValueView<Tuple, Tuple> {
/** {@inheritDoc} */
@Override
public Tuple get(@Nullable Transaction tx, @NotNull Tuple key) {
- return getAsync(tx, key).join();
+ return sync(getAsync(tx, key));
}
/** {@inheritDoc} */
@@ -74,7 +76,7 @@ public class ClientKeyValueBinaryView implements KeyValueView<Tuple, Tuple> {
/** {@inheritDoc} */
@Override
public Map<Tuple, Tuple> getAll(@Nullable Transaction tx, @NotNull Collection<Tuple> keys) {
- return getAllAsync(tx, keys).join();
+ return sync(getAllAsync(tx, keys));
}
/** {@inheritDoc} */
@@ -92,7 +94,7 @@ public class ClientKeyValueBinaryView implements KeyValueView<Tuple, Tuple> {
/** {@inheritDoc} */
@Override
public boolean contains(@Nullable Transaction tx, @NotNull Tuple key) {
- return containsAsync(tx, key).join();
+ return sync(containsAsync(tx, key));
}
/** {@inheritDoc} */
@@ -109,7 +111,7 @@ public class ClientKeyValueBinaryView implements KeyValueView<Tuple, Tuple> {
/** {@inheritDoc} */
@Override
public void put(@Nullable Transaction tx, @NotNull Tuple key, Tuple val) {
- putAsync(tx, key, val).join();
+ sync(putAsync(tx, key, val));
}
/** {@inheritDoc} */
@@ -128,7 +130,7 @@ public class ClientKeyValueBinaryView implements KeyValueView<Tuple, Tuple> {
/** {@inheritDoc} */
@Override
public void putAll(@Nullable Transaction tx, @NotNull Map<Tuple, Tuple> pairs) {
- putAllAsync(tx, pairs).join();
+ sync(putAllAsync(tx, pairs));
}
/** {@inheritDoc} */
@@ -145,7 +147,7 @@ public class ClientKeyValueBinaryView implements KeyValueView<Tuple, Tuple> {
/** {@inheritDoc} */
@Override
public Tuple getAndPut(@Nullable Transaction tx, @NotNull Tuple key, Tuple val) {
- return getAndPutAsync(tx, key, val).join();
+ return sync(getAndPutAsync(tx, key, val));
}
/** {@inheritDoc} */
@@ -162,7 +164,7 @@ public class ClientKeyValueBinaryView implements KeyValueView<Tuple, Tuple> {
/** {@inheritDoc} */
@Override
public boolean putIfAbsent(@Nullable Transaction tx, @NotNull Tuple key, @NotNull Tuple val) {
- return putIfAbsentAsync(tx, key, val).join();
+ return sync(putIfAbsentAsync(tx, key, val));
}
/** {@inheritDoc} */
@@ -179,13 +181,13 @@ public class ClientKeyValueBinaryView implements KeyValueView<Tuple, Tuple> {
/** {@inheritDoc} */
@Override
public boolean remove(@Nullable Transaction tx, @NotNull Tuple key) {
- return removeAsync(tx, key).join();
+ return sync(removeAsync(tx, key));
}
/** {@inheritDoc} */
@Override
public boolean remove(@Nullable Transaction tx, @NotNull Tuple key, @NotNull Tuple val) {
- return removeAsync(tx, key, val).join();
+ return sync(removeAsync(tx, key, val));
}
/** {@inheritDoc} */
@@ -214,7 +216,7 @@ public class ClientKeyValueBinaryView implements KeyValueView<Tuple, Tuple> {
/** {@inheritDoc} */
@Override
public Collection<Tuple> removeAll(@Nullable Transaction tx, @NotNull Collection<Tuple> keys) {
- return removeAllAsync(tx, keys).join();
+ return sync(removeAllAsync(tx, keys));
}
/** {@inheritDoc} */
@@ -232,7 +234,7 @@ public class ClientKeyValueBinaryView implements KeyValueView<Tuple, Tuple> {
/** {@inheritDoc} */
@Override
public Tuple getAndRemove(@Nullable Transaction tx, @NotNull Tuple key) {
- return getAndRemoveAsync(tx, key).join();
+ return sync(getAndRemoveAsync(tx, key));
}
/** {@inheritDoc} */
@@ -249,13 +251,13 @@ public class ClientKeyValueBinaryView implements KeyValueView<Tuple, Tuple> {
/** {@inheritDoc} */
@Override
public boolean replace(@Nullable Transaction tx, @NotNull Tuple key, Tuple val) {
- return replaceAsync(tx, key, val).join();
+ return sync(replaceAsync(tx, key, val));
}
/** {@inheritDoc} */
@Override
public boolean replace(@Nullable Transaction tx, @NotNull Tuple key, Tuple oldVal, Tuple newVal) {
- return replaceAsync(tx, key, oldVal, newVal).join();
+ return sync(replaceAsync(tx, key, oldVal, newVal));
}
/** {@inheritDoc} */
@@ -286,7 +288,7 @@ public class ClientKeyValueBinaryView implements KeyValueView<Tuple, Tuple> {
/** {@inheritDoc} */
@Override
public Tuple getAndReplace(@Nullable Transaction tx, @NotNull Tuple key, Tuple val) {
- return getAndReplaceAsync(tx, key, val).join();
+ return sync(getAndReplaceAsync(tx, key, val));
}
/** {@inheritDoc} */
diff --git a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientKeyValueView.java b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientKeyValueView.java
index 8e4fc3b..2f8e78a 100644
--- a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientKeyValueView.java
+++ b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientKeyValueView.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.client.table;
+import static org.apache.ignite.internal.client.ClientUtils.sync;
import static org.apache.ignite.internal.client.table.ClientTable.writeTx;
import java.io.Serializable;
@@ -77,7 +78,7 @@ public class ClientKeyValueView<K, V> implements KeyValueView<K, V> {
/** {@inheritDoc} */
@Override
public V get(@Nullable Transaction tx, @NotNull K key) {
- return getAsync(tx, key).join();
+ return sync(getAsync(tx, key));
}
/** {@inheritDoc} */
@@ -94,7 +95,7 @@ public class ClientKeyValueView<K, V> implements KeyValueView<K, V> {
/** {@inheritDoc} */
@Override
public Map<K, V> getAll(@Nullable Transaction tx, @NotNull Collection<K> keys) {
- return getAllAsync(tx, keys).join();
+ return sync(getAllAsync(tx, keys));
}
/** {@inheritDoc} */
@@ -116,7 +117,7 @@ public class ClientKeyValueView<K, V> implements KeyValueView<K, V> {
/** {@inheritDoc} */
@Override
public boolean contains(@Nullable Transaction tx, @NotNull K key) {
- return containsAsync(tx, key).join();
+ return sync(containsAsync(tx, key));
}
/** {@inheritDoc} */
@@ -133,7 +134,7 @@ public class ClientKeyValueView<K, V> implements KeyValueView<K, V> {
/** {@inheritDoc} */
@Override
public void put(@Nullable Transaction tx, @NotNull K key, V val) {
- putAsync(tx, key, val).join();
+ sync(putAsync(tx, key, val));
}
/** {@inheritDoc} */
@@ -150,7 +151,7 @@ public class ClientKeyValueView<K, V> implements KeyValueView<K, V> {
/** {@inheritDoc} */
@Override
public void putAll(@Nullable Transaction tx, @NotNull Map<K, V> pairs) {
- putAllAsync(tx, pairs).join();
+ sync(putAllAsync(tx, pairs));
}
/** {@inheritDoc} */
@@ -181,7 +182,7 @@ public class ClientKeyValueView<K, V> implements KeyValueView<K, V> {
/** {@inheritDoc} */
@Override
public V getAndPut(@Nullable Transaction tx, @NotNull K key, V val) {
- return getAndPutAsync(tx, key, val).join();
+ return sync(getAndPutAsync(tx, key, val));
}
/** {@inheritDoc} */
@@ -198,7 +199,7 @@ public class ClientKeyValueView<K, V> implements KeyValueView<K, V> {
/** {@inheritDoc} */
@Override
public boolean putIfAbsent(@Nullable Transaction tx, @NotNull K key, @NotNull V val) {
- return putIfAbsentAsync(tx, key, val).join();
+ return sync(putIfAbsentAsync(tx, key, val));
}
/** {@inheritDoc} */
@@ -215,13 +216,13 @@ public class ClientKeyValueView<K, V> implements KeyValueView<K, V> {
/** {@inheritDoc} */
@Override
public boolean remove(@Nullable Transaction tx, @NotNull K key) {
- return removeAsync(tx, key).join();
+ return sync(removeAsync(tx, key));
}
/** {@inheritDoc} */
@Override
public boolean remove(@Nullable Transaction tx, @NotNull K key, V val) {
- return removeAsync(tx, key, val).join();
+ return sync(removeAsync(tx, key, val));
}
/** {@inheritDoc} */
@@ -249,7 +250,7 @@ public class ClientKeyValueView<K, V> implements KeyValueView<K, V> {
/** {@inheritDoc} */
@Override
public Collection<K> removeAll(@Nullable Transaction tx, @NotNull Collection<K> keys) {
- return removeAllAsync(tx, keys).join();
+ return sync(removeAllAsync(tx, keys));
}
/** {@inheritDoc} */
@@ -271,7 +272,7 @@ public class ClientKeyValueView<K, V> implements KeyValueView<K, V> {
/** {@inheritDoc} */
@Override
public V getAndRemove(@Nullable Transaction tx, @NotNull K key) {
- return getAndRemoveAsync(tx, key).join();
+ return sync(getAndRemoveAsync(tx, key));
}
/** {@inheritDoc} */
@@ -288,7 +289,7 @@ public class ClientKeyValueView<K, V> implements KeyValueView<K, V> {
/** {@inheritDoc} */
@Override
public boolean replace(@Nullable Transaction tx, @NotNull K key, V val) {
- return replaceAsync(tx, key, val).join();
+ return sync(replaceAsync(tx, key, val));
}
/** {@inheritDoc} */
@@ -296,7 +297,7 @@ public class ClientKeyValueView<K, V> implements KeyValueView<K, V> {
public boolean replace(@Nullable Transaction tx, @NotNull K key, V oldVal, V newVal) {
Objects.requireNonNull(key);
- return replaceAsync(tx, key, oldVal, newVal).join();
+ return sync(replaceAsync(tx, key, oldVal, newVal));
}
/** {@inheritDoc} */
@@ -330,7 +331,7 @@ public class ClientKeyValueView<K, V> implements KeyValueView<K, V> {
/** {@inheritDoc} */
@Override
public V getAndReplace(@Nullable Transaction tx, @NotNull K key, V val) {
- return getAndReplaceAsync(tx, key, val).join();
+ return sync(getAndReplaceAsync(tx, key, val));
}
/** {@inheritDoc} */
diff --git a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientRecordBinaryView.java b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientRecordBinaryView.java
index a1b1c55..413d244 100644
--- a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientRecordBinaryView.java
+++ b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientRecordBinaryView.java
@@ -17,6 +17,8 @@
package org.apache.ignite.internal.client.table;
+import static org.apache.ignite.internal.client.ClientUtils.sync;
+
import java.io.Serializable;
import java.util.Collection;
import java.util.Collections;
@@ -57,7 +59,7 @@ public class ClientRecordBinaryView implements RecordView<Tuple> {
/** {@inheritDoc} */
@Override
public Tuple get(@Nullable Transaction tx, @NotNull Tuple keyRec) {
- return getAsync(tx, keyRec).join();
+ return sync(getAsync(tx, keyRec));
}
/** {@inheritDoc} */
@@ -74,7 +76,7 @@ public class ClientRecordBinaryView implements RecordView<Tuple> {
/** {@inheritDoc} */
@Override
public Collection<Tuple> getAll(@Nullable Transaction tx, @NotNull Collection<Tuple> keyRecs) {
- return getAllAsync(tx, keyRecs).join();
+ return sync(getAllAsync(tx, keyRecs));
}
/** {@inheritDoc} */
@@ -92,7 +94,7 @@ public class ClientRecordBinaryView implements RecordView<Tuple> {
/** {@inheritDoc} */
@Override
public void upsert(@Nullable Transaction tx, @NotNull Tuple rec) {
- upsertAsync(tx, rec).join();
+ sync(upsertAsync(tx, rec));
}
/** {@inheritDoc} */
@@ -110,7 +112,7 @@ public class ClientRecordBinaryView implements RecordView<Tuple> {
/** {@inheritDoc} */
@Override
public void upsertAll(@Nullable Transaction tx, @NotNull Collection<Tuple> recs) {
- upsertAllAsync(tx, recs).join();
+ sync(upsertAllAsync(tx, recs));
}
/** {@inheritDoc} */
@@ -127,7 +129,7 @@ public class ClientRecordBinaryView implements RecordView<Tuple> {
/** {@inheritDoc} */
@Override
public Tuple getAndUpsert(@Nullable Transaction tx, @NotNull Tuple rec) {
- return getAndUpsertAsync(tx, rec).join();
+ return sync(getAndUpsertAsync(tx, rec));
}
/** {@inheritDoc} */
@@ -144,7 +146,7 @@ public class ClientRecordBinaryView implements RecordView<Tuple> {
/** {@inheritDoc} */
@Override
public boolean insert(@Nullable Transaction tx, @NotNull Tuple rec) {
- return insertAsync(tx, rec).join();
+ return sync(insertAsync(tx, rec));
}
/** {@inheritDoc} */
@@ -161,7 +163,7 @@ public class ClientRecordBinaryView implements RecordView<Tuple> {
/** {@inheritDoc} */
@Override
public Collection<Tuple> insertAll(@Nullable Transaction tx, @NotNull Collection<Tuple> recs) {
- return insertAllAsync(tx, recs).join();
+ return sync(insertAllAsync(tx, recs));
}
/** {@inheritDoc} */
@@ -179,13 +181,13 @@ public class ClientRecordBinaryView implements RecordView<Tuple> {
/** {@inheritDoc} */
@Override
public boolean replace(@Nullable Transaction tx, @NotNull Tuple rec) {
- return replaceAsync(tx, rec).join();
+ return sync(replaceAsync(tx, rec));
}
/** {@inheritDoc} */
@Override
public boolean replace(@Nullable Transaction tx, @NotNull Tuple oldRec, @NotNull Tuple newRec) {
- return replaceAsync(tx, oldRec, newRec).join();
+ return sync(replaceAsync(tx, oldRec, newRec));
}
/** {@inheritDoc} */
@@ -217,7 +219,7 @@ public class ClientRecordBinaryView implements RecordView<Tuple> {
/** {@inheritDoc} */
@Override
public Tuple getAndReplace(@Nullable Transaction tx, @NotNull Tuple rec) {
- return getAndReplaceAsync(tx, rec).join();
+ return sync(getAndReplaceAsync(tx, rec));
}
/** {@inheritDoc} */
@@ -234,7 +236,7 @@ public class ClientRecordBinaryView implements RecordView<Tuple> {
/** {@inheritDoc} */
@Override
public boolean delete(@Nullable Transaction tx, @NotNull Tuple keyRec) {
- return deleteAsync(tx, keyRec).join();
+ return sync(deleteAsync(tx, keyRec));
}
/** {@inheritDoc} */
@@ -251,7 +253,7 @@ public class ClientRecordBinaryView implements RecordView<Tuple> {
/** {@inheritDoc} */
@Override
public boolean deleteExact(@Nullable Transaction tx, @NotNull Tuple rec) {
- return deleteExactAsync(tx, rec).join();
+ return sync(deleteExactAsync(tx, rec));
}
/** {@inheritDoc} */
@@ -268,7 +270,7 @@ public class ClientRecordBinaryView implements RecordView<Tuple> {
/** {@inheritDoc} */
@Override
public Tuple getAndDelete(@Nullable Transaction tx, @NotNull Tuple keyRec) {
- return getAndDeleteAsync(tx, keyRec).join();
+ return sync(getAndDeleteAsync(tx, keyRec));
}
/** {@inheritDoc} */
@@ -285,7 +287,7 @@ public class ClientRecordBinaryView implements RecordView<Tuple> {
/** {@inheritDoc} */
@Override
public Collection<Tuple> deleteAll(@Nullable Transaction tx, @NotNull Collection<Tuple> keyRecs) {
- return deleteAllAsync(tx, keyRecs).join();
+ return sync(deleteAllAsync(tx, keyRecs));
}
/** {@inheritDoc} */
@@ -303,7 +305,7 @@ public class ClientRecordBinaryView implements RecordView<Tuple> {
/** {@inheritDoc} */
@Override
public Collection<Tuple> deleteAllExact(@Nullable Transaction tx, @NotNull Collection<Tuple> recs) {
- return deleteAllExactAsync(tx, recs).join();
+ return sync(deleteAllExactAsync(tx, recs));
}
/** {@inheritDoc} */
diff --git a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientRecordView.java b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientRecordView.java
index ff590fa..8681e56 100644
--- a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientRecordView.java
+++ b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientRecordView.java
@@ -17,6 +17,8 @@
package org.apache.ignite.internal.client.table;
+import static org.apache.ignite.internal.client.ClientUtils.sync;
+
import java.io.Serializable;
import java.util.Collection;
import java.util.Collections;
@@ -57,7 +59,7 @@ public class ClientRecordView<R> implements RecordView<R> {
/** {@inheritDoc} */
@Override
public R get(@Nullable Transaction tx, @NotNull R keyRec) {
- return getAsync(tx, keyRec).join();
+ return sync(getAsync(tx, keyRec));
}
/** {@inheritDoc} */
@@ -74,7 +76,7 @@ public class ClientRecordView<R> implements RecordView<R> {
/** {@inheritDoc} */
@Override
public Collection<R> getAll(@Nullable Transaction tx, @NotNull Collection<R> keyRecs) {
- return getAllAsync(tx, keyRecs).join();
+ return sync(getAllAsync(tx, keyRecs));
}
/** {@inheritDoc} */
@@ -92,7 +94,7 @@ public class ClientRecordView<R> implements RecordView<R> {
/** {@inheritDoc} */
@Override
public void upsert(@Nullable Transaction tx, @NotNull R rec) {
- upsertAsync(tx, rec).join();
+ sync(upsertAsync(tx, rec));
}
/** {@inheritDoc} */
@@ -109,7 +111,7 @@ public class ClientRecordView<R> implements RecordView<R> {
/** {@inheritDoc} */
@Override
public void upsertAll(@Nullable Transaction tx, @NotNull Collection<R> recs) {
- upsertAllAsync(tx, recs).join();
+ sync(upsertAllAsync(tx, recs));
}
/** {@inheritDoc} */
@@ -126,7 +128,7 @@ public class ClientRecordView<R> implements RecordView<R> {
/** {@inheritDoc} */
@Override
public R getAndUpsert(@Nullable Transaction tx, @NotNull R rec) {
- return getAndUpsertAsync(tx, rec).join();
+ return sync(getAndUpsertAsync(tx, rec));
}
/** {@inheritDoc} */
@@ -143,7 +145,7 @@ public class ClientRecordView<R> implements RecordView<R> {
/** {@inheritDoc} */
@Override
public boolean insert(@Nullable Transaction tx, @NotNull R rec) {
- return insertAsync(tx, rec).join();
+ return sync(insertAsync(tx, rec));
}
/** {@inheritDoc} */
@@ -160,7 +162,7 @@ public class ClientRecordView<R> implements RecordView<R> {
/** {@inheritDoc} */
@Override
public Collection<R> insertAll(@Nullable Transaction tx, @NotNull Collection<R> recs) {
- return insertAllAsync(tx, recs).join();
+ return sync(insertAllAsync(tx, recs));
}
/** {@inheritDoc} */
@@ -178,13 +180,13 @@ public class ClientRecordView<R> implements RecordView<R> {
/** {@inheritDoc} */
@Override
public boolean replace(@Nullable Transaction tx, @NotNull R rec) {
- return replaceAsync(tx, rec).join();
+ return sync(replaceAsync(tx, rec));
}
/** {@inheritDoc} */
@Override
public boolean replace(@Nullable Transaction tx, @NotNull R oldRec, @NotNull R newRec) {
- return replaceAsync(tx, oldRec, newRec).join();
+ return sync(replaceAsync(tx, oldRec, newRec));
}
/** {@inheritDoc} */
@@ -213,7 +215,7 @@ public class ClientRecordView<R> implements RecordView<R> {
/** {@inheritDoc} */
@Override
public R getAndReplace(@Nullable Transaction tx, @NotNull R rec) {
- return getAndReplaceAsync(tx, rec).join();
+ return sync(getAndReplaceAsync(tx, rec));
}
/** {@inheritDoc} */
@@ -230,7 +232,7 @@ public class ClientRecordView<R> implements RecordView<R> {
/** {@inheritDoc} */
@Override
public boolean delete(@Nullable Transaction tx, @NotNull R keyRec) {
- return deleteAsync(tx, keyRec).join();
+ return sync(deleteAsync(tx, keyRec));
}
/** {@inheritDoc} */
@@ -247,7 +249,7 @@ public class ClientRecordView<R> implements RecordView<R> {
/** {@inheritDoc} */
@Override
public boolean deleteExact(@Nullable Transaction tx, @NotNull R rec) {
- return deleteExactAsync(tx, rec).join();
+ return sync(deleteExactAsync(tx, rec));
}
/** {@inheritDoc} */
@@ -264,7 +266,7 @@ public class ClientRecordView<R> implements RecordView<R> {
/** {@inheritDoc} */
@Override
public R getAndDelete(@Nullable Transaction tx, @NotNull R keyRec) {
- return getAndDeleteAsync(tx, keyRec).join();
+ return sync(getAndDeleteAsync(tx, keyRec));
}
/** {@inheritDoc} */
@@ -281,7 +283,7 @@ public class ClientRecordView<R> implements RecordView<R> {
/** {@inheritDoc} */
@Override
public Collection<R> deleteAll(@Nullable Transaction tx, @NotNull Collection<R> keyRecs) {
- return deleteAllAsync(tx, keyRecs).join();
+ return sync(deleteAllAsync(tx, keyRecs));
}
/** {@inheritDoc} */
@@ -299,7 +301,7 @@ public class ClientRecordView<R> implements RecordView<R> {
/** {@inheritDoc} */
@Override
public Collection<R> deleteAllExact(@Nullable Transaction tx, @NotNull Collection<R> recs) {
- return deleteAllExactAsync(tx, recs).join();
+ return sync(deleteAllExactAsync(tx, recs));
}
/** {@inheritDoc} */
diff --git a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientTables.java b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientTables.java
index 3a5a7a5..df9981a 100644
--- a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientTables.java
+++ b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientTables.java
@@ -17,6 +17,8 @@
package org.apache.ignite.internal.client.table;
+import static org.apache.ignite.internal.client.ClientUtils.sync;
+
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -46,7 +48,7 @@ public class ClientTables implements IgniteTables {
/** {@inheritDoc} */
@Override
public Table createTable(String name, Consumer<TableChange> tableInitChange) {
- return createTableAsync(name, tableInitChange).join();
+ return sync(createTableAsync(name, tableInitChange));
}
/** {@inheritDoc} */
@@ -61,7 +63,7 @@ public class ClientTables implements IgniteTables {
/** {@inheritDoc} */
@Override
public void alterTable(String name, Consumer<TableChange> tableChange) {
- alterTableAsync(name, tableChange).join();
+ sync(alterTableAsync(name, tableChange));
}
/** {@inheritDoc} */
@@ -76,7 +78,7 @@ public class ClientTables implements IgniteTables {
/** {@inheritDoc} */
@Override
public void dropTable(String name) {
- dropTableAsync(name).join();
+ sync(dropTableAsync(name));
}
/** {@inheritDoc} */
@@ -90,7 +92,7 @@ public class ClientTables implements IgniteTables {
/** {@inheritDoc} */
@Override
public List<Table> tables() {
- return tablesAsync().join();
+ return sync(tablesAsync());
}
/** {@inheritDoc} */
@@ -112,7 +114,7 @@ public class ClientTables implements IgniteTables {
/** {@inheritDoc} */
@Override
public Table table(String name) {
- return tableAsync(name).join();
+ return sync(tableAsync(name));
}
/** {@inheritDoc} */
diff --git a/modules/client/src/main/java/org/apache/ignite/internal/client/tx/ClientTransaction.java b/modules/client/src/main/java/org/apache/ignite/internal/client/tx/ClientTransaction.java
index c9b4f42..db90c8a 100644
--- a/modules/client/src/main/java/org/apache/ignite/internal/client/tx/ClientTransaction.java
+++ b/modules/client/src/main/java/org/apache/ignite/internal/client/tx/ClientTransaction.java
@@ -17,6 +17,8 @@
package org.apache.ignite.internal.client.tx;
+import static org.apache.ignite.internal.client.ClientUtils.sync;
+
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.ignite.internal.client.ClientChannel;
@@ -78,7 +80,7 @@ public class ClientTransaction implements Transaction {
/** {@inheritDoc} */
@Override
public void commit() throws TransactionException {
- commitAsync().join();
+ sync(commitAsync());
}
/** {@inheritDoc} */
@@ -92,7 +94,7 @@ public class ClientTransaction implements Transaction {
/** {@inheritDoc} */
@Override
public void rollback() throws TransactionException {
- rollbackAsync().join();
+ sync(rollbackAsync());
}
/** {@inheritDoc} */
diff --git a/modules/client/src/main/java/org/apache/ignite/internal/client/tx/ClientTransactions.java b/modules/client/src/main/java/org/apache/ignite/internal/client/tx/ClientTransactions.java
index 3c0f074..4fd8552 100644
--- a/modules/client/src/main/java/org/apache/ignite/internal/client/tx/ClientTransactions.java
+++ b/modules/client/src/main/java/org/apache/ignite/internal/client/tx/ClientTransactions.java
@@ -17,6 +17,8 @@
package org.apache.ignite.internal.client.tx;
+import static org.apache.ignite.internal.client.ClientUtils.sync;
+
import java.util.concurrent.CompletableFuture;
import org.apache.ignite.internal.client.ReliableChannel;
import org.apache.ignite.internal.client.proto.ClientOp;
@@ -49,7 +51,7 @@ public class ClientTransactions implements IgniteTransactions {
/** {@inheritDoc} */
@Override
public Transaction begin() {
- return beginAsync().join();
+ return sync(beginAsync());
}
/** {@inheritDoc} */
diff --git a/modules/client/src/test/java/org/apache/ignite/client/ClientKeyValueBinaryViewTest.java b/modules/client/src/test/java/org/apache/ignite/client/ClientKeyValueBinaryViewTest.java
index 8927317..c8b6d73 100644
--- a/modules/client/src/test/java/org/apache/ignite/client/ClientKeyValueBinaryViewTest.java
+++ b/modules/client/src/test/java/org/apache/ignite/client/ClientKeyValueBinaryViewTest.java
@@ -27,7 +27,6 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.Collection;
import java.util.List;
import java.util.Map;
-import java.util.concurrent.CompletionException;
import org.apache.ignite.table.KeyValueView;
import org.apache.ignite.table.Table;
import org.apache.ignite.table.Tuple;
@@ -172,7 +171,7 @@ public class ClientKeyValueBinaryViewTest extends AbstractClientTableTest {
public void testContainsThrowsOnEmptyKey() {
KeyValueView<Tuple, Tuple> kvView = defaultTable().keyValueView();
- var ex = assertThrows(CompletionException.class, () -> kvView.contains(null, Tuple.create()));
+ var ex = assertThrows(IgniteClientException.class, () -> kvView.contains(null, Tuple.create()));
assertTrue(ex.getMessage().contains("Missed key column: id"), ex.getMessage());
}
diff --git a/modules/client/src/test/java/org/apache/ignite/client/ClientKeyValueViewTest.java b/modules/client/src/test/java/org/apache/ignite/client/ClientKeyValueViewTest.java
index 92719e6..65b7acd 100644
--- a/modules/client/src/test/java/org/apache/ignite/client/ClientKeyValueViewTest.java
+++ b/modules/client/src/test/java/org/apache/ignite/client/ClientKeyValueViewTest.java
@@ -31,7 +31,6 @@ import java.util.BitSet;
import java.util.Collection;
import java.util.List;
import java.util.Map;
-import java.util.concurrent.CompletionException;
import org.apache.ignite.table.KeyValueView;
import org.apache.ignite.table.RecordView;
import org.apache.ignite.table.Table;
@@ -192,10 +191,9 @@ public class ClientKeyValueViewTest extends AbstractClientTableTest {
public void testMissingKeyColumnThrowsException() {
var kvView = defaultTable().keyValueView(NamePojo.class, NamePojo.class);
- CompletionException e = assertThrows(CompletionException.class, () -> kvView.get(null, new NamePojo()));
- IgniteClientException ice = (IgniteClientException) e.getCause();
+ IgniteClientException e = assertThrows(IgniteClientException.class, () -> kvView.get(null, new NamePojo()));
- assertEquals("No field found for column id", ice.getMessage());
+ assertEquals("No field found for column id", e.getMessage());
}
@Test
diff --git a/modules/client/src/test/java/org/apache/ignite/client/ClientRecordViewTest.java b/modules/client/src/test/java/org/apache/ignite/client/ClientRecordViewTest.java
index 2d3c885..95a9075 100644
--- a/modules/client/src/test/java/org/apache/ignite/client/ClientRecordViewTest.java
+++ b/modules/client/src/test/java/org/apache/ignite/client/ClientRecordViewTest.java
@@ -30,7 +30,6 @@ import java.math.BigInteger;
import java.util.BitSet;
import java.util.Collection;
import java.util.List;
-import java.util.concurrent.CompletionException;
import org.apache.ignite.table.KeyValueView;
import org.apache.ignite.table.RecordView;
import org.apache.ignite.table.Table;
@@ -190,10 +189,9 @@ public class ClientRecordViewTest extends AbstractClientTableTest {
public void testMissingKeyColumnThrowsException() {
RecordView<NamePojo> recordView = defaultTable().recordView(NamePojo.class);
- CompletionException e = assertThrows(CompletionException.class, () -> recordView.get(null, new NamePojo()));
- IgniteClientException ice = (IgniteClientException) e.getCause();
+ IgniteClientException e = assertThrows(IgniteClientException.class, () -> recordView.get(null, new NamePojo()));
- assertEquals("No field found for column id", ice.getMessage());
+ assertEquals("No field found for column id", e.getMessage());
}
@Test
diff --git a/modules/client/src/test/java/org/apache/ignite/client/ClientTableTest.java b/modules/client/src/test/java/org/apache/ignite/client/ClientTableTest.java
index a7ad4a3..738bb42 100644
--- a/modules/client/src/test/java/org/apache/ignite/client/ClientTableTest.java
+++ b/modules/client/src/test/java/org/apache/ignite/client/ClientTableTest.java
@@ -26,7 +26,6 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.Arrays;
import java.util.List;
-import java.util.concurrent.CompletionException;
import org.apache.ignite.client.fakes.FakeSchemaRegistry;
import org.apache.ignite.internal.client.table.ClientTuple;
import org.apache.ignite.table.RecordView;
@@ -45,7 +44,7 @@ public class ClientTableTest extends AbstractClientTableTest {
var key = Tuple.create().set("name", "123");
- var ex = assertThrows(CompletionException.class, () -> table.get(null, key));
+ var ex = assertThrows(IgniteClientException.class, () -> table.get(null, key));
assertTrue(ex.getMessage().contains("Missed key column: id"),
ex.getMessage());
@@ -369,7 +368,7 @@ public class ClientTableTest extends AbstractClientTableTest {
.set("id", 1)
.set("str_non_null", null);
- var ex = assertThrows(CompletionException.class, () -> table.upsert(null, tuple));
+ var ex = assertThrows(IgniteClientException.class, () -> table.upsert(null, tuple));
assertTrue(ex.getMessage().contains("null was passed, but column is not nullable"), ex.getMessage());
}
@@ -378,7 +377,7 @@ public class ClientTableTest extends AbstractClientTableTest {
public void testColumnTypeMismatchThrowsException() {
var tuple = Tuple.create().set("id", "str");
- var ex = assertThrows(CompletionException.class, () -> defaultTable().recordView().upsert(null, tuple));
+ var ex = assertThrows(IgniteClientException.class, () -> defaultTable().recordView().upsert(null, tuple));
assertTrue(ex.getMessage().contains("Incorrect value type for column 'id': Expected Integer, but got String"), ex.getMessage());
}
diff --git a/modules/client/src/test/java/org/apache/ignite/client/ReconnectTest.java b/modules/client/src/test/java/org/apache/ignite/client/ReconnectTest.java
index fe8793b..55ffcee 100644
--- a/modules/client/src/test/java/org/apache/ignite/client/ReconnectTest.java
+++ b/modules/client/src/test/java/org/apache/ignite/client/ReconnectTest.java
@@ -20,7 +20,6 @@ package org.apache.ignite.client;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
-import java.util.concurrent.CompletionException;
import org.apache.ignite.client.fakes.FakeIgnite;
import org.apache.ignite.internal.util.IgniteUtils;
import org.junit.jupiter.api.AfterEach;
@@ -90,7 +89,7 @@ public class ReconnectTest {
server.close();
- var ex = assertThrows(CompletionException.class, () -> client.tables().tables());
- assertEquals(ex.getCause().getMessage(), "Channel is closed");
+ var ex = assertThrows(IgniteClientConnectionException.class, () -> client.tables().tables());
+ assertEquals(ex.getMessage(), "Channel is closed");
}
}
diff --git a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/client/ItThinClientTransactionsTest.java b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/client/ItThinClientTransactionsTest.java
index f157f46..6fc6056 100644
--- a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/client/ItThinClientTransactionsTest.java
+++ b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/client/ItThinClientTransactionsTest.java
@@ -29,7 +29,6 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.CompletionException;
import org.apache.ignite.client.IgniteClient;
import org.apache.ignite.client.IgniteClientException;
import org.apache.ignite.table.KeyValueView;
@@ -191,8 +190,8 @@ public class ItThinClientTransactionsTest extends ItAbstractThinClientTest {
Transaction tx = client().transactions().begin();
kvView.put(tx, -100, "1");
- var ex = assertThrows(CompletionException.class, () -> kvView.get(null, -100));
- assertThat(ex.getCause().getMessage(), containsString("TimeoutException"));
+ IgniteClientException ex = assertThrows(IgniteClientException.class, () -> kvView.get(null, -100));
+ assertThat(ex.getMessage(), containsString("TimeoutException"));
tx.rollback();
}
@@ -237,12 +236,12 @@ public class ItThinClientTransactionsTest extends ItAbstractThinClientTest {
}
};
- var ex = assertThrows(CompletionException.class, () -> kvView().put(tx, 1, "1"));
+ var ex = assertThrows(IgniteClientException.class, () -> kvView().put(tx, 1, "1"));
String expected = "Unsupported transaction implementation: "
+ "'class org.apache.ignite.internal.runner.app.client.ItThinClientTransactionsTest";
- assertThat(ex.getCause().getMessage(), startsWith(expected));
+ assertThat(ex.getMessage(), startsWith(expected));
}
@Test
@@ -252,10 +251,9 @@ public class ItThinClientTransactionsTest extends ItAbstractThinClientTest {
try (IgniteClient client2 = IgniteClient.builder().addresses(getNodeAddress()).build()) {
RecordView<Tuple> recordView = client2.tables().tables().get(0).recordView();
- var ex = assertThrows(CompletionException.class, () -> recordView.upsert(tx, Tuple.create()));
- var iex = (IgniteClientException) ex.getCause();
+ IgniteClientException ex = assertThrows(IgniteClientException.class, () -> recordView.upsert(tx, Tuple.create()));
- assertEquals("Transaction context has been lost due to connection errors.", iex.getMessage());
+ assertEquals("Transaction context has been lost due to connection errors.", ex.getMessage());
}
}