Skip to content

Commit 19d0f1b

Browse files
committed
SDKQE-3384: FIT-Columnar - Support error grpc changes
Change-Id: I96b3782e917d62eec710f324894cef8929a5ebf6 Reviewed-on: https://review.couchbase.org/c/couchbase-jvm-clients/+/216125 Reviewed-by: Graham Pople <graham.pople@couchbase.com> Tested-by: Build Bot <build@couchbase.com>
1 parent bb8a318 commit 19d0f1b

File tree

8 files changed

+71
-70
lines changed

8 files changed

+71
-70
lines changed

columnar-fit-performer-shared/src/main/java/com/couchbase/columnar/fit/core/util/ResultUtil.java

Lines changed: 0 additions & 48 deletions
This file was deleted.

columnar-java-fit-performer/src/main/java/com/couchbase/columnar/query/QueryResultBufferedStreamer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import com.couchbase.columnar.client.java.QueryResult;
2020
import com.couchbase.columnar.client.java.Queryable;
2121
import com.couchbase.columnar.client.java.Row;
22-
import com.couchbase.columnar.fit.core.util.ResultUtil;
22+
import com.couchbase.columnar.util.ResultUtil;
2323
import fit.columnar.EmptyResultOrFailureResponse;
2424
import fit.columnar.ExecuteQueryRequest;
2525
import fit.columnar.QueryResultMetadataResponse;

columnar-java-fit-performer/src/main/java/com/couchbase/columnar/query/QueryResultPushBasedStreamer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import com.couchbase.columnar.client.java.json.JsonArray;
2424
import com.couchbase.columnar.client.java.json.JsonObject;
2525
import com.couchbase.columnar.content.ContentAsUtil;
26-
import com.couchbase.columnar.fit.core.util.ErrorUtil;
26+
import com.couchbase.columnar.util.ErrorUtil;
2727
import fit.columnar.EmptyResultOrFailureResponse;
2828
import fit.columnar.ExecuteQueryRequest;
2929
import fit.columnar.QueryResultMetadataResponse;

columnar-java-fit-performer/src/main/java/com/couchbase/columnar/query/QueryRowUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import com.couchbase.columnar.client.java.json.JsonArray;
2121
import com.couchbase.columnar.client.java.json.JsonObject;
2222
import com.couchbase.columnar.content.ContentAsUtil;
23-
import com.couchbase.columnar.fit.core.util.ErrorUtil;
23+
import com.couchbase.columnar.util.ErrorUtil;
2424
import fit.columnar.QueryRowResponse;
2525

2626
import javax.annotation.Nullable;

columnar-java-fit-performer/src/main/java/com/couchbase/columnar/rpc/JavaColumnarCrossService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
import com.couchbase.columnar.query.ExecuteQueryStreamer;
2222
import com.couchbase.columnar.query.QueryResultBufferedStreamer;
2323
import com.couchbase.columnar.query.QueryResultPushBasedStreamer;
24-
import com.couchbase.columnar.fit.core.util.ErrorUtil;
25-
import com.couchbase.columnar.fit.core.util.ResultUtil;
24+
import com.couchbase.columnar.util.ErrorUtil;
25+
import com.couchbase.columnar.util.ResultUtil;
2626
import fit.columnar.CloseAllQueryResultsRequest;
2727
import fit.columnar.CloseQueryResultRequest;
2828
import fit.columnar.ColumnarCrossServiceGrpc;

columnar-java-fit-performer/src/main/java/com/couchbase/columnar/rpc/JavaColumnarService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
import com.couchbase.columnar.cluster.ColumnarClusterConnection;
2222
import com.couchbase.columnar.modes.Mode;
2323
import com.couchbase.columnar.fit.core.exceptions.ExceptionGrpcMappingUtil;
24-
import com.couchbase.columnar.fit.core.util.ResultUtil;
2524
import com.couchbase.columnar.fit.core.util.VersionUtil;
25+
import com.couchbase.columnar.util.ResultUtil;
2626
import fit.columnar.CloseAllColumnarClustersRequest;
2727
import fit.columnar.ClusterCloseRequest;
2828
import fit.columnar.ClusterNewInstanceRequest;
Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,26 +13,24 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package com.couchbase.columnar.fit.core.util;
16+
package com.couchbase.columnar.util;
1717

18-
import fit.columnar.ColumnarErrorType;
18+
import com.couchbase.columnar.client.java.InvalidCredentialException;
19+
import com.couchbase.columnar.client.java.QueryException;
20+
import com.couchbase.columnar.client.java.TimeoutException;
1921
import fit.columnar.PlatformErrorType;
2022

21-
import javax.annotation.Nullable;
22-
2323

2424
public class ErrorUtil {
2525
private ErrorUtil() {
2626
throw new AssertionError("not instantiable");
2727
}
2828

29-
private static @Nullable fit.columnar.ColumnarErrorType convertColumnarError(Throwable exception) {
29+
private static boolean isColumnarError(Throwable exception) {
3030
String simpleName = exception.getClass().getSimpleName();
3131
return switch (simpleName) {
32-
case "QueryException" -> ColumnarErrorType.COLUMNAR_EXCEPTION_QUERY;
33-
case "InvalidCredentialException" -> ColumnarErrorType.COLUMNAR_EXCEPTION_INVALID_CREDENTIAL;
34-
case "TimeoutException" -> ColumnarErrorType.COLUMNAR_EXCEPTION_TIMEOUT;
35-
default -> null;
32+
case "QueryException", "InvalidCredentialException", "TimeoutException", "ColumnarException" -> true;
33+
default -> false;
3634
};
3735
}
3836

@@ -45,21 +43,38 @@ private static fit.columnar.PlatformErrorType convertPlatformError(Throwable exc
4543
public static fit.columnar.Error convertError(Throwable raw) {
4644
var ret = fit.columnar.Error.newBuilder();
4745

48-
var type = ErrorUtil.convertColumnarError(raw);
49-
50-
if (type != null) {
46+
if (isColumnarError(raw)) {
5147
var out = fit.columnar.ColumnarError.newBuilder()
52-
.setType(type)
53-
.setAsString(raw.toString());
48+
.setAsString(raw.toString());
49+
50+
if (raw instanceof QueryException queryException) {
51+
out.setSubException(fit.columnar.SubColumnarError.newBuilder().setQueryException(
52+
fit.columnar.QueryException.newBuilder()
53+
.setErrorCode(queryException.code())
54+
.setServerMessage(queryException.serverMessage())
55+
.build())
56+
.build());
57+
}
58+
if (raw instanceof InvalidCredentialException) {
59+
out.setSubException(fit.columnar.SubColumnarError.newBuilder().setInvalidCredentialException(
60+
fit.columnar.InvalidCredentialException.newBuilder().build())
61+
.build());
62+
}
63+
64+
if (raw instanceof TimeoutException) {
65+
out.setSubException(fit.columnar.SubColumnarError.newBuilder().setTimeoutException(fit.columnar.TimeoutException.newBuilder().build())
66+
.build());
67+
}
68+
5469
if (raw.getCause() != null) {
5570
out.setCause(convertError(raw.getCause()));
5671
}
5772

5873
ret.setColumnar(out);
5974
} else {
6075
ret.setPlatform(fit.columnar.PlatformError.newBuilder()
61-
.setType(convertPlatformError(raw))
62-
.setAsString(raw.toString()));
76+
.setType(convertPlatformError(raw))
77+
.setAsString(raw.toString()));
6378
}
6479

6580
return ret.build();
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.couchbase.columnar.util;
2+
3+
import com.couchbase.columnar.fit.core.util.StartTimes;
4+
import fit.columnar.EmptyResultOrFailureResponse;
5+
import fit.columnar.ResponseMetadata;
6+
7+
public class ResultUtil {
8+
public static EmptyResultOrFailureResponse success(StartTimes startTime) {
9+
return fit.columnar.EmptyResultOrFailureResponse.newBuilder()
10+
.setEmptySuccess(true)
11+
.setMetadata(responseMetadata(startTime))
12+
.build();
13+
}
14+
15+
public static EmptyResultOrFailureResponse failure(Throwable err, StartTimes startTime) {
16+
return fit.columnar.EmptyResultOrFailureResponse.newBuilder()
17+
.setMetadata(responseMetadata(startTime))
18+
.setError(ErrorUtil.convertError(err))
19+
.build();
20+
}
21+
22+
public static ResponseMetadata responseMetadata(StartTimes startTime) {
23+
if (startTime != null) {
24+
return fit.columnar.ResponseMetadata.newBuilder()
25+
.setElapsedNanos(System.nanoTime() - startTime.asSystem())
26+
.setInitiated(startTime.asWallclock())
27+
.build();
28+
}
29+
else {
30+
// todo remove when fix timings
31+
return fit.columnar.ResponseMetadata.newBuilder().build();
32+
}
33+
}
34+
}

0 commit comments

Comments
 (0)