public static AttemptId fromString(final String attemptIdStr) { final UUID uuid = UUID.fromString(attemptIdStr); final long part1 = uuid.getMostSignificantBits(); final long part2 = uuid.getLeastSignificantBits(); final ExternalId externalId = ExternalId.newBuilder() .setPart1(part1) .setPart2(part2 & ExternalIdHelper.MASK) .build(); final int attempt = (int) part2 & 0xFF; return new AttemptId(externalId, attempt); } }
/** * Translate job id to external id. * * @param jobId job id * @return external id */ static ExternalId getJobIdAsExternalId(JobId jobId) { UUID id = UUID.fromString(jobId.getId()); return ExternalId.newBuilder() .setPart1(id.getMostSignificantBits()) .setPart2(id.getLeastSignificantBits()) .build(); }
/** * Helper method to generate an "external" QueryId. * * This is the only method that can generate external query Id. * * @return generated QueryId */ public static ExternalId generateExternalId() { ThreadLocalRandom r = ThreadLocalRandom.current(); // create a new internalId where the first four bytes are a growing time (each new value comes earlier in sequence). // Last 11 bytes are random. // last byte is set to 0 final long time = (int) (System.currentTimeMillis()/1000); final long p1 = ((Integer.MAX_VALUE - time) << 32) + r.nextInt(); // generate a long from 7 random bytes + 1 zero byte // I could also just generate a random long then mask it's last bit // but not sure how this will affect it's randomness final byte[] bytes = new byte[7]; r.nextBytes(bytes); long p2 = 0; for (int i = 0; i < 7; i++) { p2 += (bytes[i] & 0xFFL) << (8 * i); } p2 = p2 << 8; return ExternalId.newBuilder().setPart1(p1).setPart2(p2).build(); }
/** * <code>required .exec.shared.ExternalId external_Id = 1;</code> */ public Builder mergeExternalId(com.dremio.exec.proto.UserBitShared.ExternalId value) { if (externalIdBuilder_ == null) { if (((bitField0_ & 0x00000001) == 0x00000001) && externalId_ != com.dremio.exec.proto.UserBitShared.ExternalId.getDefaultInstance()) { externalId_ = com.dremio.exec.proto.UserBitShared.ExternalId.newBuilder(externalId_).mergeFrom(value).buildPartial(); } else { externalId_ = value; } onChanged(); } else { externalIdBuilder_.mergeFrom(value); } bitField0_ |= 0x00000001; return this; } /**
public void mergeFrom(io.protostuff.Input input, com.dremio.exec.proto.CoordRPC.JobCancelRequest.Builder builder) throws java.io.IOException { for(int number = input.readFieldNumber(this);; number = input.readFieldNumber(this)) { switch(number) { case 0: return; case 1: builder.setExternalId(input.mergeObject(com.dremio.exec.proto.UserBitShared.ExternalId.newBuilder(), com.dremio.exec.proto.SchemaUserBitShared.ExternalId.MERGE)); break; case 2: builder.setCancelReason(input.readString()); break; default: input.handleUnknownField(number, this); } } } public boolean isInitialized(com.dremio.exec.proto.CoordRPC.JobCancelRequest.Builder builder)
public Builder toBuilder() { return newBuilder(this); }
public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(com.dremio.exec.proto.UserBitShared.ExternalId prototype) {
public static Builder newBuilder(com.dremio.exec.proto.UserBitShared.ExternalId prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); }
@Deprecated // Dremio still uses QueryId internally, once we switch to using AttemptId we can get rid of this public static ExternalId toExternal(final QueryId queryId) { return ExternalId.newBuilder() .setPart1(queryId.getPart1()) .setPart2(queryId.getPart2() & MASK) .build(); }
public com.dremio.exec.proto.UserBitShared.ExternalId.Builder newMessage() { return com.dremio.exec.proto.UserBitShared.ExternalId.newBuilder(); } public java.lang.String getFieldName(int number)