Skip to content

Commit 1c33dcf

Browse files
committed
Updated work with YdbTracer
1 parent 62552e4 commit 1c33dcf

File tree

6 files changed

+45
-47
lines changed

6 files changed

+45
-47
lines changed

jdbc/src/main/java/tech/ydb/jdbc/YdbTracer.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,18 @@
11
package tech.ydb.jdbc;
22

33

4-
import tech.ydb.jdbc.impl.YdbTracerImpl;
5-
6-
74

85
/**
96
*
107
* @author Aleksandr Gorshenin
118
*/
129
public interface YdbTracer {
13-
static void clear() {
14-
YdbTracerImpl.clear();
15-
}
10+
interface Storage {
11+
YdbTracer get();
12+
13+
default void clear() {
1614

17-
static YdbTracer current() {
18-
return YdbTracerImpl.current();
15+
}
1916
}
2017

2118
void setId(String id);

jdbc/src/main/java/tech/ydb/jdbc/context/BaseYdbExecutor.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,11 @@ public abstract class BaseYdbExecutor implements YdbExecutor {
4040
private final boolean useStreamResultSet;
4141

4242
private final AtomicReference<YdbQueryResult> currResult;
43-
protected final boolean traceEnabled;
4443
protected final String prefixPragma;
4544
protected final YdbTypes types;
4645

4746
public BaseYdbExecutor(YdbContext ctx) {
4847
this.retryCtx = ctx.getRetryCtx();
49-
this.traceEnabled = ctx.isTxTracerEnabled();
5048
this.sessionTimeout = ctx.getOperationProperties().getSessionTimeout();
5149
this.useStreamResultSet = ctx.getOperationProperties().getUseStreamResultSets();
5250
this.tableClient = ctx.getTableClient();

jdbc/src/main/java/tech/ydb/jdbc/context/YdbContext.java

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import tech.ydb.jdbc.YdbTracer;
2828
import tech.ydb.jdbc.common.YdbTypes;
2929
import tech.ydb.jdbc.exception.ExceptionFactory;
30+
import tech.ydb.jdbc.impl.YdbTracerImpl;
3031
import tech.ydb.jdbc.impl.YdbTracerNone;
3132
import tech.ydb.jdbc.query.QueryType;
3233
import tech.ydb.jdbc.query.YdbPreparedQuery;
@@ -90,6 +91,8 @@ public class YdbContext implements AutoCloseable {
9091
private final boolean autoResizeSessionPool;
9192
private final AtomicInteger connectionsCount = new AtomicInteger();
9293

94+
private YdbTracer.Storage tracerStorage;
95+
9396
private YdbContext(
9497
YdbConfig config,
9598
YdbOperationProperties operationProperties,
@@ -137,12 +140,18 @@ private YdbContext(
137140
prefixPath = transport.getDatabase();
138141
prefixPragma = "";
139142
}
143+
144+
this.tracerStorage = config.isTxTracedEnabled() ? YdbTracerImpl.ENABLED : YdbTracerNone.DISABLED;
140145
}
141146

142147
public YdbTypes getTypes() {
143148
return types;
144149
}
145150

151+
public void setTracerStorage(YdbTracer.Storage storage) {
152+
this.tracerStorage = storage;
153+
}
154+
146155
/**
147156
* Grpc Transport for other API YDB server clients
148157
*
@@ -152,6 +161,10 @@ public GrpcTransport getGrpcTransport() {
152161
return grpcTransport;
153162
}
154163

164+
public YdbTracer getTracer() {
165+
return tracerStorage.get();
166+
}
167+
155168
private String joined(String path1, String path2) {
156169
return path1.endsWith("/") || path2.startsWith("/") ? path1 + path2 : path1 + "/" + path2;
157170
}
@@ -188,14 +201,6 @@ public String getUsername() {
188201
return config.getUsername();
189202
}
190203

191-
public YdbTracer getTracer() {
192-
return config.isTxTracedEnabled() ? YdbTracer.current() : YdbTracerNone.current();
193-
}
194-
195-
public boolean isTxTracerEnabled() {
196-
return config.isTxTracedEnabled();
197-
}
198-
199204
public YdbExecutor createExecutor() throws SQLException {
200205
if (config.isUseQueryService()) {
201206
return new QueryServiceExecutor(this, operationProps.getTransactionLevel(), operationProps.isAutoCommit());
@@ -264,6 +269,8 @@ public void register() {
264269
}
265270

266271
public void deregister() {
272+
tracerStorage.clear();
273+
267274
int actual = connectionsCount.decrementAndGet();
268275
int maxSize = tableClient.sessionPoolStats().getMaxSize();
269276
if (autoResizeSessionPool && maxSize > SESSION_POOL_RESIZE_STEP) {
@@ -409,9 +416,9 @@ public YdbPreparedQuery findOrPrepareParams(YdbQuery query, YdbPrepareMode mode)
409416
String tablePath = joined(getPrefixPath(), query.getYqlBatcher().getTableName());
410417
TableDescription description = tableDescribeCache.getIfPresent(tablePath);
411418
if (description == null) {
412-
YdbTracer tracer = getTracer();
419+
YdbTracer tracer = tracerStorage.get();
413420
tracer.trace("--> describe table");
414-
tracer.query(tablePath);
421+
tracer.trace(tablePath);
415422

416423
DescribeTableSettings settings = withDefaultTimeout(new DescribeTableSettings());
417424
Result<TableDescription> result = retryCtx.supplyResult(
@@ -449,9 +456,9 @@ public YdbPreparedQuery findOrPrepareParams(YdbQuery query, YdbPrepareMode mode)
449456
Map<String, Type> queryTypes = queryParamsCache.getIfPresent(query.getOriginQuery());
450457
if (queryTypes == null) {
451458
String yql = prefixPragma + query.getPreparedYql();
452-
YdbTracer tracer = getTracer();
459+
YdbTracer tracer = tracerStorage.get();
453460
tracer.trace("--> prepare data query");
454-
tracer.query(yql);
461+
tracer.trace(yql);
455462

456463
PrepareDataQuerySettings settings = withDefaultTimeout(new PrepareDataQuerySettings());
457464
Result<DataQuery> result = retryCtx.supplyResult(

jdbc/src/main/java/tech/ydb/jdbc/impl/YdbConnectionImpl.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import tech.ydb.jdbc.YdbPrepareMode;
2727
import tech.ydb.jdbc.YdbPreparedStatement;
2828
import tech.ydb.jdbc.YdbStatement;
29-
import tech.ydb.jdbc.YdbTracer;
3029
import tech.ydb.jdbc.context.YdbContext;
3130
import tech.ydb.jdbc.context.YdbExecutor;
3231
import tech.ydb.jdbc.context.YdbValidator;
@@ -108,7 +107,6 @@ public void close() throws SQLException {
108107
validator.clearWarnings();
109108
executor.close();
110109
ctx.deregister();
111-
YdbTracer.clear();
112110
}
113111

114112
@Override

jdbc/src/main/java/tech/ydb/jdbc/impl/YdbTracerImpl.java

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,34 @@
1616
*/
1717
public class YdbTracerImpl implements YdbTracer {
1818
private static final Logger LOGGER = Logger.getLogger(YdbTracer.class.getName());
19-
private static final ThreadLocal<YdbTracerImpl> LOCAL = new ThreadLocal<>();
19+
private static final ThreadLocal<YdbTracer> LOCAL = new ThreadLocal<>();
2020
private static final AtomicLong ANONYMOUS_COUNTER = new AtomicLong(0);
2121

22+
public static final Storage ENABLED = new Storage() {
23+
@Override
24+
public YdbTracer get() {
25+
YdbTracer tracer = LOCAL.get();
26+
if (tracer == null) {
27+
tracer = new YdbTracerImpl();
28+
LOCAL.set(tracer);
29+
}
30+
31+
return tracer;
32+
}
33+
34+
@Override
35+
public void clear() {
36+
LOCAL.remove();
37+
}
38+
};
39+
2240
private final Date startDate = new Date();
2341
private final long startedAt = System.currentTimeMillis();
2442
private final List<Record> records = new ArrayList<>();
2543

2644
private String txID = null;
2745
private String label = null;
2846
private boolean isMarked = false;
29-
private boolean isClosed = false;
3047

3148
private class Record {
3249
private final long executedAt = System.currentTimeMillis();
@@ -39,20 +56,6 @@ private class Record {
3956
}
4057
}
4158

42-
public static void clear() {
43-
LOCAL.remove();
44-
}
45-
46-
public static YdbTracer current() {
47-
YdbTracerImpl tracer = LOCAL.get();
48-
if (tracer == null || tracer.isClosed) {
49-
tracer = new YdbTracerImpl();
50-
LOCAL.set(tracer);
51-
}
52-
53-
return tracer;
54-
}
55-
5659
@Override
5760
public void trace(String message) {
5861
records.add(new Record(message, false));
@@ -82,8 +85,6 @@ public void markToPrint(String label) {
8285

8386
@Override
8487
public void close() {
85-
isClosed = true;
86-
8788
LOCAL.remove();
8889

8990
final Level level = isMarked ? Level.INFO : Level.FINE;

jdbc/src/main/java/tech/ydb/jdbc/impl/YdbTracerNone.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,8 @@
77
* @author Aleksandr Gorshenin
88
*/
99
public class YdbTracerNone implements YdbTracer {
10-
private static final YdbTracerNone INSTANCE = new YdbTracerNone();
11-
12-
public static YdbTracer current() {
13-
return INSTANCE;
14-
}
10+
private static final YdbTracer NONE = new YdbTracerNone();
11+
public static final YdbTracer.Storage DISABLED = () -> NONE;
1512

1613
@Override
1714
public void trace(String message) { }

0 commit comments

Comments
 (0)