@@ -74,64 +74,63 @@ public void run() {
74
74
}
75
75
76
76
try {
77
- if (CancelQueryTaskImpl .this .queryTimeoutKillsConnection ) {
78
- localQueryToCancel .setCancelStatus (CancelStatus .CANCELED_BY_TIMEOUT );
79
- session .invokeCleanupListeners (new OperationCancelledException (Messages .getString ("Statement.ConnectionKilledDueToTimeout" )));
80
- } else {
81
- localQueryToCancel .getCancelTimeoutLock ().lock ();
77
+ localQueryToCancel .getCancelTimeoutLock ().lock ();
78
+ try {
79
+ long origConnId = session .getThreadId ();
80
+ HostInfo hostInfo = session .getHostInfo ();
81
+ String database = hostInfo .getDatabase ();
82
+ String user = hostInfo .getUser ();
83
+ String password = hostInfo .getPassword ();
84
+
85
+ NativeSession newSession = null ;
82
86
try {
83
- long origConnId = session .getThreadId ();
84
- HostInfo hostInfo = session .getHostInfo ();
85
- String database = hostInfo .getDatabase ();
86
- String user = hostInfo .getUser ();
87
- String password = hostInfo .getPassword ();
88
-
89
- NativeSession newSession = null ;
90
- try {
91
- newSession = new NativeSession (hostInfo , session .getPropertySet ());
92
-
93
- TelemetrySpan span = newSession .getTelemetryHandler ().startSpan (TelemetrySpanName .CANCEL_QUERY );
94
- try (TelemetryScope scope = span .makeCurrent ()) {
95
- span .setAttribute (TelemetryAttribute .DB_NAME , database );
96
- span .setAttribute (TelemetryAttribute .DB_OPERATION , TelemetryAttribute .OPERATION_KILL );
97
- span .setAttribute (TelemetryAttribute .DB_STATEMENT , TelemetryAttribute .OPERATION_KILL + TelemetryAttribute .STATEMENT_SUFFIX );
98
- span .setAttribute (TelemetryAttribute .DB_SYSTEM , TelemetryAttribute .DB_SYSTEM_DEFAULT );
99
- span .setAttribute (TelemetryAttribute .DB_USER , user );
100
- span .setAttribute (TelemetryAttribute .THREAD_ID , Thread .currentThread ().getId ());
101
- span .setAttribute (TelemetryAttribute .THREAD_NAME , Thread .currentThread ().getName ());
102
-
103
- newSession .connect (hostInfo , user , password , database , 30000 , new TransactionEventHandler () {
104
-
105
- @ Override
106
- public void transactionCompleted () {
107
- }
108
-
109
- @ Override
110
- public void transactionBegun () {
111
- }
112
-
113
- });
114
- newSession .getProtocol ().sendCommand (new NativeMessageBuilder (newSession .getServerSession ().supportsQueryAttributes ())
115
- .buildComQuery (newSession .getSharedSendPacket (), newSession , "KILL QUERY " + origConnId ), false , 0 );
116
- } catch (Throwable t ) {
117
- span .setError (t );
118
- throw t ;
119
- } finally {
120
- span .end ();
121
- }
87
+ newSession = new NativeSession (hostInfo , session .getPropertySet ());
88
+
89
+ TelemetrySpan span = newSession .getTelemetryHandler ().startSpan (TelemetrySpanName .CANCEL_QUERY );
90
+ try (TelemetryScope scope = span .makeCurrent ()) {
91
+ span .setAttribute (TelemetryAttribute .DB_NAME , database );
92
+ span .setAttribute (TelemetryAttribute .DB_OPERATION , TelemetryAttribute .OPERATION_KILL );
93
+ span .setAttribute (TelemetryAttribute .DB_STATEMENT , TelemetryAttribute .OPERATION_KILL + TelemetryAttribute .STATEMENT_SUFFIX );
94
+ span .setAttribute (TelemetryAttribute .DB_SYSTEM , TelemetryAttribute .DB_SYSTEM_DEFAULT );
95
+ span .setAttribute (TelemetryAttribute .DB_USER , user );
96
+ span .setAttribute (TelemetryAttribute .THREAD_ID , Thread .currentThread ().getId ());
97
+ span .setAttribute (TelemetryAttribute .THREAD_NAME , Thread .currentThread ().getName ());
98
+
99
+ newSession .connect (hostInfo , user , password , database , 30000 , new TransactionEventHandler () {
100
+
101
+ @ Override
102
+ public void transactionCompleted () {
103
+ }
104
+
105
+ @ Override
106
+ public void transactionBegun () {
107
+ }
108
+
109
+ });
110
+ newSession .getProtocol ().sendCommand (new NativeMessageBuilder (newSession .getServerSession ().supportsQueryAttributes ())
111
+ .buildComQuery (newSession .getSharedSendPacket (), newSession , "KILL QUERY " + origConnId ), false , 0 );
112
+ } catch (Throwable t ) {
113
+ span .setError (t );
114
+ throw t ;
122
115
} finally {
123
- try {
124
- newSession .forceClose ();
125
- } catch (Throwable t ) {
126
- // no-op.
127
- }
116
+ span .end ();
128
117
}
129
- localQueryToCancel .setCancelStatus (CancelStatus .CANCELED_BY_TIMEOUT );
130
118
} finally {
131
- localQueryToCancel .getCancelTimeoutLock ().unlock ();
119
+ try {
120
+ newSession .forceClose ();
121
+ } catch (Throwable t ) {
122
+ // no-op.
123
+ }
132
124
}
125
+ localQueryToCancel .setCancelStatus (CancelStatus .CANCELED_BY_TIMEOUT );
126
+ } finally {
127
+ localQueryToCancel .getCancelTimeoutLock ().unlock ();
128
+ }
129
+
130
+ if (CancelQueryTaskImpl .this .queryTimeoutKillsConnection ) {
131
+ session .invokeCleanupListeners (new OperationCancelledException (Messages .getString ("Statement.ConnectionKilledDueToTimeout" )));
133
132
}
134
- // } catch (NullPointerException npe) {
133
+ } catch (NullPointerException npe ) {
135
134
// Case when connection closed while starting to cancel.
136
135
// We can't easily synchronize this, because then one thread can't cancel() a running query.
137
136
// Ignore, we shouldn't re-throw this, because the connection's already closed, so the statement has been timed out.
0 commit comments