use of org.apache.drill.exec.proto.UserBitShared.DrillPBError in project drill by apache.
the class TestUserException method testBuildUserExceptionWithCause.
@Test
public void testBuildUserExceptionWithCause() {
String message = "Test message";
UserException uex = UserException.dataWriteError(new RuntimeException(message)).build(logger);
DrillPBError error = uex.getOrCreatePBError(false);
// cause message should be used
Assert.assertEquals(ErrorType.DATA_WRITE, error.getErrorType());
Assert.assertEquals(message, uex.getOriginalMessage());
}
use of org.apache.drill.exec.proto.UserBitShared.DrillPBError in project drill by apache.
the class PlanSplitter method planFragments.
/**
* Method to plan the query and return list of fragments
* it will return query plan "as is" or split plans based on the req setting: split_plan
* @param dContext
* @param queryId
* @param req
* @param connection
* @return
*/
public QueryPlanFragments planFragments(DrillbitContext dContext, QueryId queryId, GetQueryPlanFragments req, UserClientConnection connection) {
QueryPlanFragments.Builder responseBuilder = QueryPlanFragments.newBuilder();
QueryContext queryContext = new QueryContext(connection.getSession(), dContext, queryId);
responseBuilder.setQueryId(queryId);
try {
responseBuilder.addAllFragments(getFragments(dContext, req, queryContext, queryId));
responseBuilder.setStatus(QueryState.COMPLETED);
} catch (Exception e) {
final String errorMessage = String.format("Failed to produce PlanFragments for query id \"%s\" with " + "request to %s plan", queryId, (req.getSplitPlan() ? "split" : "no split"));
DrillPBError error = DrillPBError.newBuilder().setMessage(errorMessage).setErrorType(DrillPBError.ErrorType.PLAN).build();
responseBuilder.setStatus(QueryState.FAILED);
responseBuilder.setError(error);
}
return responseBuilder.build();
}
use of org.apache.drill.exec.proto.UserBitShared.DrillPBError in project drill by apache.
the class TestUserException method testBuildUserExceptionWithUserExceptionCauseAndMessage.
@Test
public void testBuildUserExceptionWithUserExceptionCauseAndMessage() {
String messageA = "Test message A";
String messageB = "Test message B";
UserException original = UserException.connectionError().message(messageA).build(logger);
UserException uex = UserException.dataWriteError(wrap(original, 5)).message(messageB).build(logger);
//builder should return the unwrapped original user exception and not build a new one
Assert.assertEquals(original, uex);
DrillPBError error = uex.getOrCreatePBError(false);
Assert.assertEquals(messageA, uex.getOriginalMessage());
// messageB should not be part of the context
Assert.assertFalse(error.getMessage().contains(messageB));
}
use of org.apache.drill.exec.proto.UserBitShared.DrillPBError in project drill by apache.
the class TestUserException method testBuildSystemException.
// make sure system exceptions are created properly
@Test
public void testBuildSystemException() {
String message = "This is an exception";
UserException uex = UserException.systemError(new Exception(new RuntimeException(message))).build(logger);
Assert.assertTrue(uex.getOriginalMessage().contains(message));
Assert.assertTrue(uex.getOriginalMessage().contains("RuntimeException"));
DrillPBError error = uex.getOrCreatePBError(true);
Assert.assertEquals(ErrorType.SYSTEM, error.getErrorType());
}
use of org.apache.drill.exec.proto.UserBitShared.DrillPBError in project drill by apache.
the class TestUserException method testBuildUserExceptionWithFormattedMessage.
@Test
public void testBuildUserExceptionWithFormattedMessage() {
String format = "This is test #%d";
UserException uex = UserException.connectionError().message(format, 5).build(logger);
DrillPBError error = uex.getOrCreatePBError(false);
Assert.assertEquals(ErrorType.CONNECTION, error.getErrorType());
Assert.assertEquals(String.format(format, 5), uex.getOriginalMessage());
}
Aggregations