diff --git a/CHANGELOG.md b/CHANGELOG.md
index cde8e33dc..ab0dbb618 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,13 @@
## 2.2.0 ##
-* Added export module
-* Core: Operation manager
+* Updated implementation of CoordinationService
+* Added module for QueryService
+* Added module for ExportService
+* Added common module with basic interfaces for transactions and retries
+* Core: Added basic support of long operations
+* Core: Added support for tracing requests with id
* Table: Added readRows operation in table service
+* Topics: Added support of transaction between tables and topics
## 2.1.12 ##
diff --git a/bom/pom.xml b/bom/pom.xml
index 2c5cee3f2..cbc1d582b 100644
--- a/bom/pom.xml
+++ b/bom/pom.xml
@@ -16,7 +16,7 @@
1.0.0
1.6.2
- 2.1.1
+ 2.2.0
diff --git a/common/pom.xml b/common/pom.xml
index 99b593a62..909a85d91 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -28,6 +28,12 @@
org.slf4j
slf4j-api
+
+
+ junit
+ junit
+ test
+
org.apache.logging.log4j
log4j-slf4j-impl
diff --git a/core/src/main/java/tech/ydb/core/ErrorPolicy.java b/common/src/main/java/tech/ydb/common/retry/ErrorPolicy.java
similarity index 96%
rename from core/src/main/java/tech/ydb/core/ErrorPolicy.java
rename to common/src/main/java/tech/ydb/common/retry/ErrorPolicy.java
index d80c7a940..daaad9a97 100644
--- a/core/src/main/java/tech/ydb/core/ErrorPolicy.java
+++ b/common/src/main/java/tech/ydb/common/retry/ErrorPolicy.java
@@ -1,4 +1,4 @@
-package tech.ydb.core;
+package tech.ydb.common.retry;
/**
* Recipes should use the configured error policy to decide how to retry
diff --git a/core/src/main/java/tech/ydb/core/retry/ExponentialBackoffRetry.java b/common/src/main/java/tech/ydb/common/retry/ExponentialBackoffRetry.java
similarity index 94%
rename from core/src/main/java/tech/ydb/core/retry/ExponentialBackoffRetry.java
rename to common/src/main/java/tech/ydb/common/retry/ExponentialBackoffRetry.java
index 973ad655b..e6d14ba47 100644
--- a/core/src/main/java/tech/ydb/core/retry/ExponentialBackoffRetry.java
+++ b/common/src/main/java/tech/ydb/common/retry/ExponentialBackoffRetry.java
@@ -1,8 +1,7 @@
-package tech.ydb.core.retry;
+package tech.ydb.common.retry;
import java.util.concurrent.ThreadLocalRandom;
-import tech.ydb.core.RetryPolicy;
/**
*
diff --git a/core/src/main/java/tech/ydb/core/retry/RetryForever.java b/common/src/main/java/tech/ydb/common/retry/RetryForever.java
similarity index 92%
rename from core/src/main/java/tech/ydb/core/retry/RetryForever.java
rename to common/src/main/java/tech/ydb/common/retry/RetryForever.java
index e75ed0f1e..9dda076f8 100644
--- a/core/src/main/java/tech/ydb/core/retry/RetryForever.java
+++ b/common/src/main/java/tech/ydb/common/retry/RetryForever.java
@@ -1,6 +1,4 @@
-package tech.ydb.core.retry;
-
-import tech.ydb.core.RetryPolicy;
+package tech.ydb.common.retry;
/**
*
diff --git a/core/src/main/java/tech/ydb/core/retry/RetryNTimes.java b/common/src/main/java/tech/ydb/common/retry/RetryNTimes.java
similarity index 98%
rename from core/src/main/java/tech/ydb/core/retry/RetryNTimes.java
rename to common/src/main/java/tech/ydb/common/retry/RetryNTimes.java
index 47282a58a..f3c0449fa 100644
--- a/core/src/main/java/tech/ydb/core/retry/RetryNTimes.java
+++ b/common/src/main/java/tech/ydb/common/retry/RetryNTimes.java
@@ -1,4 +1,4 @@
-package tech.ydb.core.retry;
+package tech.ydb.common.retry;
/**
*
diff --git a/core/src/main/java/tech/ydb/core/RetryPolicy.java b/common/src/main/java/tech/ydb/common/retry/RetryPolicy.java
similarity index 96%
rename from core/src/main/java/tech/ydb/core/RetryPolicy.java
rename to common/src/main/java/tech/ydb/common/retry/RetryPolicy.java
index a925c4228..83a3010e2 100644
--- a/core/src/main/java/tech/ydb/core/RetryPolicy.java
+++ b/common/src/main/java/tech/ydb/common/retry/RetryPolicy.java
@@ -1,4 +1,4 @@
-package tech.ydb.core;
+package tech.ydb.common.retry;
/**
* Abstracts the policy to use when retrying some actions
diff --git a/core/src/main/java/tech/ydb/core/retry/RetryUntilElapsed.java b/common/src/main/java/tech/ydb/common/retry/RetryUntilElapsed.java
similarity index 98%
rename from core/src/main/java/tech/ydb/core/retry/RetryUntilElapsed.java
rename to common/src/main/java/tech/ydb/common/retry/RetryUntilElapsed.java
index 11fb4fecc..d94f3ac9d 100644
--- a/core/src/main/java/tech/ydb/core/retry/RetryUntilElapsed.java
+++ b/common/src/main/java/tech/ydb/common/retry/RetryUntilElapsed.java
@@ -1,4 +1,4 @@
-package tech.ydb.core.retry;
+package tech.ydb.common.retry;
/**
*
diff --git a/core/src/test/java/tech/ydb/core/retry/RetryPoliciesTest.java b/common/src/test/java/tech/ydb/common/retry/RetryPoliciesTest.java
similarity index 96%
rename from core/src/test/java/tech/ydb/core/retry/RetryPoliciesTest.java
rename to common/src/test/java/tech/ydb/common/retry/RetryPoliciesTest.java
index 52418f08e..bf5baa0a8 100644
--- a/core/src/test/java/tech/ydb/core/retry/RetryPoliciesTest.java
+++ b/common/src/test/java/tech/ydb/common/retry/RetryPoliciesTest.java
@@ -1,4 +1,8 @@
-package tech.ydb.core.retry;
+package tech.ydb.common.retry;
+
+import tech.ydb.common.retry.RetryNTimes;
+import tech.ydb.common.retry.RetryUntilElapsed;
+import tech.ydb.common.retry.RetryForever;
import org.junit.Assert;
import org.junit.Test;
diff --git a/common/src/test/resources/log4j2.xml b/common/src/test/resources/log4j2.xml
new file mode 100644
index 000000000..b9ee3ced3
--- /dev/null
+++ b/common/src/test/resources/log4j2.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/coordination/pom.xml b/coordination/pom.xml
index 1f22ff3ed..eebefe798 100644
--- a/coordination/pom.xml
+++ b/coordination/pom.xml
@@ -22,7 +22,7 @@
tech.ydb
- ydb-sdk-core
+ ydb-sdk-common
diff --git a/coordination/src/main/java/tech/ydb/coordination/impl/SessionImpl.java b/coordination/src/main/java/tech/ydb/coordination/impl/SessionImpl.java
index bb1d883c0..a9ae47cec 100644
--- a/coordination/src/main/java/tech/ydb/coordination/impl/SessionImpl.java
+++ b/coordination/src/main/java/tech/ydb/coordination/impl/SessionImpl.java
@@ -21,6 +21,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import tech.ydb.common.retry.RetryPolicy;
import tech.ydb.coordination.CoordinationSession;
import tech.ydb.coordination.SemaphoreLease;
import tech.ydb.coordination.description.SemaphoreDescription;
@@ -30,7 +31,6 @@
import tech.ydb.coordination.settings.WatchSemaphoreMode;
import tech.ydb.core.Issue;
import tech.ydb.core.Result;
-import tech.ydb.core.RetryPolicy;
import tech.ydb.core.Status;
import tech.ydb.core.StatusCode;
diff --git a/coordination/src/main/java/tech/ydb/coordination/settings/CoordinationSessionSettings.java b/coordination/src/main/java/tech/ydb/coordination/settings/CoordinationSessionSettings.java
index 69a728322..621d8290e 100644
--- a/coordination/src/main/java/tech/ydb/coordination/settings/CoordinationSessionSettings.java
+++ b/coordination/src/main/java/tech/ydb/coordination/settings/CoordinationSessionSettings.java
@@ -3,8 +3,8 @@
import java.time.Duration;
import java.util.concurrent.Executor;
-import tech.ydb.core.RetryPolicy;
-import tech.ydb.core.retry.RetryUntilElapsed;
+import tech.ydb.common.retry.RetryPolicy;
+import tech.ydb.common.retry.RetryUntilElapsed;
/**
*
diff --git a/query/src/main/java/tech/ydb/query/QueryClient.java b/query/src/main/java/tech/ydb/query/QueryClient.java
index cd649a940..1075701ea 100644
--- a/query/src/main/java/tech/ydb/query/QueryClient.java
+++ b/query/src/main/java/tech/ydb/query/QueryClient.java
@@ -6,6 +6,8 @@
import javax.annotation.WillNotClose;
+import io.grpc.ExperimentalApi;
+
import tech.ydb.core.Result;
import tech.ydb.core.grpc.GrpcTransport;
import tech.ydb.query.impl.QueryClientImpl;
@@ -14,6 +16,7 @@
*
* @author Aleksandr Gorshenin
*/
+@ExperimentalApi("QueryService is experimental and API may change without notice")
public interface QueryClient extends AutoCloseable {
static Builder newClient(@WillNotClose GrpcTransport transport) {
return QueryClientImpl.newClient(transport);
diff --git a/query/src/main/java/tech/ydb/query/QuerySession.java b/query/src/main/java/tech/ydb/query/QuerySession.java
index 69d07cd41..45bd39828 100644
--- a/query/src/main/java/tech/ydb/query/QuerySession.java
+++ b/query/src/main/java/tech/ydb/query/QuerySession.java
@@ -2,6 +2,8 @@
import java.util.concurrent.CompletableFuture;
+import io.grpc.ExperimentalApi;
+
import tech.ydb.common.transaction.TxMode;
import tech.ydb.core.Result;
import tech.ydb.query.settings.BeginTransactionSettings;
@@ -20,6 +22,7 @@
*
* @author Aleksandr Gorshenin
*/
+@ExperimentalApi("QueryService is experimental and API may change without notice")
public interface QuerySession extends AutoCloseable {
/**
diff --git a/query/src/main/java/tech/ydb/query/QueryStream.java b/query/src/main/java/tech/ydb/query/QueryStream.java
index 746b9d56d..41d63e61a 100644
--- a/query/src/main/java/tech/ydb/query/QueryStream.java
+++ b/query/src/main/java/tech/ydb/query/QueryStream.java
@@ -2,6 +2,8 @@
import java.util.concurrent.CompletableFuture;
+import io.grpc.ExperimentalApi;
+
import tech.ydb.core.Result;
import tech.ydb.query.result.QueryInfo;
import tech.ydb.query.result.QueryResultPart;
@@ -10,6 +12,7 @@
*
* @author Aleksandr Gorshenin
*/
+@ExperimentalApi("QueryService is experimental and API may change without notice")
public interface QueryStream {
interface PartsHandler {
void onNextPart(QueryResultPart part);
diff --git a/query/src/main/java/tech/ydb/query/QueryTransaction.java b/query/src/main/java/tech/ydb/query/QueryTransaction.java
index 4780c62df..89e943b48 100644
--- a/query/src/main/java/tech/ydb/query/QueryTransaction.java
+++ b/query/src/main/java/tech/ydb/query/QueryTransaction.java
@@ -2,6 +2,8 @@
import java.util.concurrent.CompletableFuture;
+import io.grpc.ExperimentalApi;
+
import tech.ydb.common.transaction.YdbTransaction;
import tech.ydb.core.Result;
import tech.ydb.core.Status;
@@ -20,6 +22,7 @@
*
* @author Aleksandr Gorshenin
*/
+@ExperimentalApi("QueryService is experimental and API may change without notice")
public interface QueryTransaction extends YdbTransaction {
/**