/** * Helper method to create {@link DremioPBError} for client response message. * @param failedFunction Brief description of the failed function. * @param ex Exception thrown * @return */ public static DremioPBError createPBError(final String failedFunction, final Throwable ex) { final String errorId = UUID.randomUUID().toString(); logger.error("Failed to {}. ErrorId: {}", failedFunction, errorId, ex); final DremioPBError.Builder builder = DremioPBError.newBuilder(); builder.setErrorType(ErrorType.SYSTEM); // Metadata requests shouldn't cause any user errors builder.setErrorId(errorId); if (ex.getMessage() != null) { builder.setMessage(ex.getMessage()); } builder.setException(ErrorHelper.getWrapper(ex)); return builder.build(); }
/** * <code>optional .exec.shared.DremioPBError error = 2;</code> */ public Builder mergeError(com.dremio.exec.proto.UserBitShared.DremioPBError value) { if (errorBuilder_ == null) { if (((bitField0_ & 0x00000002) == 0x00000002) && error_ != com.dremio.exec.proto.UserBitShared.DremioPBError.getDefaultInstance()) { error_ = com.dremio.exec.proto.UserBitShared.DremioPBError.newBuilder(error_).mergeFrom(value).buildPartial(); } else { error_ = value; } onChanged(); } else { errorBuilder_.mergeFrom(value); } bitField0_ |= 0x00000002; return this; } /**
/** * <code>optional .exec.shared.DremioPBError error = 3;</code> */ public Builder mergeError(com.dremio.exec.proto.UserBitShared.DremioPBError value) { if (errorBuilder_ == null) { if (((bitField0_ & 0x00000004) == 0x00000004) && error_ != com.dremio.exec.proto.UserBitShared.DremioPBError.getDefaultInstance()) { error_ = com.dremio.exec.proto.UserBitShared.DremioPBError.newBuilder(error_).mergeFrom(value).buildPartial(); } else { error_ = value; } onChanged(); } else { errorBuilder_.mergeFrom(value); } bitField0_ |= 0x00000004; return this; } /**
public void mergeFrom(io.protostuff.Input input, com.dremio.exec.proto.UserProtos.GetServerMetaResp.Builder builder) throws java.io.IOException { for(int number = input.readFieldNumber(this);; number = input.readFieldNumber(this)) { switch(number) { case 0: return; case 1: builder.setStatus(com.dremio.exec.proto.UserProtos.RequestStatus.valueOf(input.readEnum())); break; case 2: builder.setServerMeta(input.mergeObject(com.dremio.exec.proto.UserProtos.ServerMeta.newBuilder(), com.dremio.exec.proto.SchemaUserProtos.ServerMeta.MERGE)); break; case 3: builder.setError(input.mergeObject(com.dremio.exec.proto.UserBitShared.DremioPBError.newBuilder(), com.dremio.exec.proto.SchemaUserBitShared.DremioPBError.MERGE)); break; case 13: builder.setQueryId(input.mergeObject(com.dremio.exec.proto.UserBitShared.QueryId.newBuilder(), com.dremio.exec.proto.SchemaUserBitShared.QueryId.MERGE)); break; default: input.handleUnknownField(number, this); } } } public boolean isInitialized(com.dremio.exec.proto.UserProtos.GetServerMetaResp.Builder builder)
public void mergeFrom(io.protostuff.Input input, com.dremio.exec.proto.UserProtos.GetTablesResp.Builder builder) throws java.io.IOException { for(int number = input.readFieldNumber(this);; number = input.readFieldNumber(this)) { switch(number) { case 0: return; case 1: builder.setStatus(com.dremio.exec.proto.UserProtos.RequestStatus.valueOf(input.readEnum())); break; case 2: builder.addTables(input.mergeObject(com.dremio.exec.proto.UserProtos.TableMetadata.newBuilder(), com.dremio.exec.proto.SchemaUserProtos.TableMetadata.MERGE)); break; case 3: builder.setError(input.mergeObject(com.dremio.exec.proto.UserBitShared.DremioPBError.newBuilder(), com.dremio.exec.proto.SchemaUserBitShared.DremioPBError.MERGE)); break; case 13: builder.setQueryId(input.mergeObject(com.dremio.exec.proto.UserBitShared.QueryId.newBuilder(), com.dremio.exec.proto.SchemaUserBitShared.QueryId.MERGE)); break; default: input.handleUnknownField(number, this); } } } public boolean isInitialized(com.dremio.exec.proto.UserProtos.GetTablesResp.Builder builder)
public void mergeFrom(io.protostuff.Input input, com.dremio.exec.proto.UserBitShared.QueryResult.Builder builder) throws java.io.IOException { for(int number = input.readFieldNumber(this);; number = input.readFieldNumber(this)) { switch(number) { case 0: return; case 1: builder.setQueryState(com.dremio.exec.proto.UserBitShared.QueryResult.QueryState.valueOf(input.readEnum())); break; case 2: builder.setQueryId(input.mergeObject(com.dremio.exec.proto.UserBitShared.QueryId.newBuilder(), com.dremio.exec.proto.SchemaUserBitShared.QueryId.MERGE)); break; case 3: builder.addError(input.mergeObject(com.dremio.exec.proto.UserBitShared.DremioPBError.newBuilder(), com.dremio.exec.proto.SchemaUserBitShared.DremioPBError.MERGE)); break; default: input.handleUnknownField(number, this); } } } public boolean isInitialized(com.dremio.exec.proto.UserBitShared.QueryResult.Builder builder)
/** * returns or creates a DremioPBError object corresponding to this user exception. * * @param verbose should the error object contain the verbose error message ? * @return protobuf error object */ public DremioPBError getOrCreatePBError(final boolean verbose) { final DremioPBError.Builder builder = DremioPBError.newBuilder(); builder.setErrorType(errorType); builder.setErrorId(context.getErrorId()); if (context.getEndpoint() != null) { builder.setEndpoint(context.getEndpoint()); } builder.setMessage(getVerboseMessage()); builder.setOriginalMessage(getOriginalMessage()); if (getCause() != null) { // some unit tests use this information to make sure a specific exception was thrown in the server builder.setException(ErrorHelper.getWrapper(getCause())); } builder.addAllContext(context.getContextAsStrings()); if (rawAdditionalContext != null) { builder.setTypeSpecificContext(rawAdditionalContext); } return builder.build(); }
public void mergeFrom(io.protostuff.Input input, com.dremio.exec.proto.UserProtos.GetColumnsResp.Builder builder) throws java.io.IOException { for(int number = input.readFieldNumber(this);; number = input.readFieldNumber(this)) { switch(number) { case 0: return; case 1: builder.setStatus(com.dremio.exec.proto.UserProtos.RequestStatus.valueOf(input.readEnum())); break; case 2: builder.addColumns(input.mergeObject(com.dremio.exec.proto.UserProtos.ColumnMetadata.newBuilder(), com.dremio.exec.proto.SchemaUserProtos.ColumnMetadata.MERGE)); break; case 3: builder.setError(input.mergeObject(com.dremio.exec.proto.UserBitShared.DremioPBError.newBuilder(), com.dremio.exec.proto.SchemaUserBitShared.DremioPBError.MERGE)); break; case 13: builder.setQueryId(input.mergeObject(com.dremio.exec.proto.UserBitShared.QueryId.newBuilder(), com.dremio.exec.proto.SchemaUserBitShared.QueryId.MERGE)); break; default: input.handleUnknownField(number, this); } } } public boolean isInitialized(com.dremio.exec.proto.UserProtos.GetColumnsResp.Builder builder)
/** * <code>optional .exec.shared.DremioPBError error = 3;</code> */ public Builder mergeError(com.dremio.exec.proto.UserBitShared.DremioPBError value) { if (errorBuilder_ == null) { if (((bitField0_ & 0x00000004) == 0x00000004) && error_ != com.dremio.exec.proto.UserBitShared.DremioPBError.getDefaultInstance()) { error_ = com.dremio.exec.proto.UserBitShared.DremioPBError.newBuilder(error_).mergeFrom(value).buildPartial(); } else { error_ = value; } onChanged(); } else { errorBuilder_.mergeFrom(value); } bitField0_ |= 0x00000004; return this; } /**
/** * <code>optional .exec.shared.DremioPBError error = 3;</code> */ public Builder mergeError(com.dremio.exec.proto.UserBitShared.DremioPBError value) { if (errorBuilder_ == null) { if (((bitField0_ & 0x00000004) == 0x00000004) && error_ != com.dremio.exec.proto.UserBitShared.DremioPBError.getDefaultInstance()) { error_ = com.dremio.exec.proto.UserBitShared.DremioPBError.newBuilder(error_).mergeFrom(value).buildPartial(); } else { error_ = value; } onChanged(); } else { errorBuilder_.mergeFrom(value); } bitField0_ |= 0x00000004; return this; } /**
/** * <code>optional .exec.shared.DremioPBError error = 3;</code> */ public Builder mergeError(com.dremio.exec.proto.UserBitShared.DremioPBError value) { if (errorBuilder_ == null) { if (((bitField0_ & 0x00000004) == 0x00000004) && error_ != com.dremio.exec.proto.UserBitShared.DremioPBError.getDefaultInstance()) { error_ = com.dremio.exec.proto.UserBitShared.DremioPBError.newBuilder(error_).mergeFrom(value).buildPartial(); } else { error_ = value; } onChanged(); } else { errorBuilder_.mergeFrom(value); } bitField0_ |= 0x00000004; return this; } /**
/** * <code>optional .exec.shared.DremioPBError error = 4;</code> */ public Builder mergeError(com.dremio.exec.proto.UserBitShared.DremioPBError value) { if (errorBuilder_ == null) { if (((bitField0_ & 0x00000008) == 0x00000008) && error_ != com.dremio.exec.proto.UserBitShared.DremioPBError.getDefaultInstance()) { error_ = com.dremio.exec.proto.UserBitShared.DremioPBError.newBuilder(error_).mergeFrom(value).buildPartial(); } else { error_ = value; } onChanged(); } else { errorBuilder_.mergeFrom(value); } bitField0_ |= 0x00000008; return this; } /**
/** * <code>optional .exec.shared.DremioPBError error = 3;</code> */ public Builder mergeError(com.dremio.exec.proto.UserBitShared.DremioPBError value) { if (errorBuilder_ == null) { if (((bitField0_ & 0x00000004) == 0x00000004) && error_ != com.dremio.exec.proto.UserBitShared.DremioPBError.getDefaultInstance()) { error_ = com.dremio.exec.proto.UserBitShared.DremioPBError.newBuilder(error_).mergeFrom(value).buildPartial(); } else { error_ = value; } onChanged(); } else { errorBuilder_.mergeFrom(value); } bitField0_ |= 0x00000004; return this; } /**
public static DremioPBError convertIfNecessary(final DremioPBError error) { if (!needsConversion(error)) { return error; } switch (error.getErrorType()) { case SCHEMA_CHANGE: case SOURCE_BAD_STATE: return DremioPBError.newBuilder(error).setErrorType(ErrorType.DATA_READ).build(); case REFLECTION_ERROR: return DremioPBError.newBuilder(error).setErrorType(ErrorType.SYSTEM).build(); case OUT_OF_MEMORY: case IO_EXCEPTION: case CONCURRENT_MODIFICATION: case INVALID_DATASET_METADATA: return DremioPBError.newBuilder(error).setErrorType(ErrorType.RESOURCE).build(); default: // we most likely forgot to add the type to this switch block throw new IllegalStateException("Unhandled error type: " + error.getErrorType()); } }
/** * <code>optional .exec.shared.DremioPBError error = 3;</code> */ public Builder mergeError(com.dremio.exec.proto.UserBitShared.DremioPBError value) { if (errorBuilder_ == null) { if (((bitField0_ & 0x00000004) == 0x00000004) && error_ != com.dremio.exec.proto.UserBitShared.DremioPBError.getDefaultInstance()) { error_ = com.dremio.exec.proto.UserBitShared.DremioPBError.newBuilder(error_).mergeFrom(value).buildPartial(); } else { error_ = value; } onChanged(); } else { errorBuilder_.mergeFrom(value); } bitField0_ |= 0x00000004; return this; } /**
@Test public void testUpdateErrorType() throws Exception { RpcCompatibilityEncoder encoder = new RpcCompatibilityEncoder(); ChannelHandlerContext context = mock(ChannelHandlerContext.class); DremioPBError error = DremioPBError.newBuilder() .setErrorType(ErrorType.IO_EXCEPTION) .setMessage("test message") .build(); OutboundRpcMessage message = new OutboundRpcMessage(RpcMode.RESPONSE_FAILURE, RpcType.RESP_QUERY_PROFILE, 12, error); List<Object> out = new ArrayList<>(); encoder.encode(context, message, out); assertEquals(1, out.size()); OutboundRpcMessage received = (OutboundRpcMessage) out.get(0); assertEquals(RpcMode.RESPONSE_FAILURE, received.mode); assertEquals(12, received.coordinationId); DremioPBError newError = (DremioPBError) received.pBody; assertEquals(ErrorType.RESOURCE, newError.getErrorType()); assertEquals("test message", newError.getMessage()); }
public Builder toBuilder() { return newBuilder(this); }
public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(com.dremio.exec.proto.UserBitShared.DremioPBError prototype) {
public static Builder newBuilder(com.dremio.exec.proto.UserBitShared.DremioPBError prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); }
public com.dremio.exec.proto.UserBitShared.DremioPBError.Builder newMessage() { return com.dremio.exec.proto.UserBitShared.DremioPBError.newBuilder(); } public java.lang.String getFieldName(int number)