private static Object parametersToObject(Procedure<?> proc) { try { ProcedureProtos.Procedure protoProc = ProcedureUtil.convertToProtoProcedure(proc); List<Object> parameters = protoProc.getStateMessageList().stream() .map((any) -> { try { return ProtobufMessageConverter.toJavaObject(any); } catch (InvalidProtocolBufferException e) { return e.toString(); } }).collect(Collectors.toList()); return parameters; } catch (IOException e) { return e.toString(); } }
@Test public void testConvert() throws Exception { // check Procedure to protobuf conversion final TestProcedure proc1 = new TestProcedure(10, 1, new byte[] { 65 }); final ProcedureProtos.Procedure proto1 = ProcedureUtil.convertToProtoProcedure(proc1); final TestProcedure proc2 = (TestProcedure)ProcedureUtil.convertToProcedure(proto1); final ProcedureProtos.Procedure proto2 = ProcedureUtil.convertToProtoProcedure(proc2); assertEquals(false, proto2.hasResult()); assertEquals("Procedure protobuf does not match", proto1, proto2); }
@Test(expected = BadProcedureException.class) public void testNoDefaultConstructorValidation() throws Exception { ProcedureUtil.validateClass(new TestProcedureNoDefaultConstructor(1)); }
public static LockServiceProtos.LockedResource convertToProtoLockedResource( LockedResource lockedResource) throws IOException { LockServiceProtos.LockedResource.Builder builder = LockServiceProtos.LockedResource.newBuilder(); builder .setResourceType(convertToProtoResourceType(lockedResource.getResourceType())) .setResourceName(lockedResource.getResourceName()) .setLockType(convertToProtoLockType(lockedResource.getLockType())); Procedure<?> exclusiveLockOwnerProcedure = lockedResource.getExclusiveLockOwnerProcedure(); if (exclusiveLockOwnerProcedure != null) { ProcedureProtos.Procedure exclusiveLockOwnerProcedureProto = convertToProtoProcedure(exclusiveLockOwnerProcedure); builder.setExclusiveLockOwnerProcedure(exclusiveLockOwnerProcedureProto); } builder.setSharedLockCount(lockedResource.getSharedLockCount()); for (Procedure<?> waitingProcedure : lockedResource.getWaitingProcedures()) { ProcedureProtos.Procedure waitingProcedureProto = convertToProtoProcedure(waitingProcedure); builder.addWaitingProcedures(waitingProcedureProto); } return builder.build(); }
public Procedure<?> getProc() throws IOException { if (proc == null) { proc = ProcedureUtil.convertToProcedure(proto); } return proc; } }
return Flow.NO_MORE_STATE; } catch (ReplicationException e) { long backoff = ProcedureUtil.getBackoffTimeMs(attempts); LOG.warn("{} failed to call prePeerModification for peer {}, sleep {} secs", getClass().getName(), peerId, backoff / 1000, e); updatePeerStorage(env); } catch (ReplicationException e) { long backoff = ProcedureUtil.getBackoffTimeMs(attempts); LOG.warn("{} update peer storage for peer {} failed, sleep {} secs", getClass().getName(), peerId, backoff / 1000, e); reopenRegions(env); } catch (Exception e) { long backoff = ProcedureUtil.getBackoffTimeMs(attempts); LOG.warn("{} reopen regions for peer {} failed, sleep {} secs", getClass().getName(), peerId, backoff / 1000, e); updateLastPushedSequenceIdForSerialPeer(env); } catch (Exception e) { long backoff = ProcedureUtil.getBackoffTimeMs(attempts); LOG.warn("{} set last sequence id for peer {} failed, sleep {} secs", getClass().getName(), peerId, backoff / 1000, e); enablePeer(env); } catch (ReplicationException e) { long backoff = ProcedureUtil.getBackoffTimeMs(attempts); LOG.warn("{} enable peer before finish for peer {} failed, sleep {} secs", getClass().getName(), peerId, backoff / 1000, e);
throws IOException { Procedure<?> proc = newProcedure(proto.getClassName());
public static LockServiceProtos.LockedResource convertToProtoLockedResource( LockedResource lockedResource) throws IOException { LockServiceProtos.LockedResource.Builder builder = LockServiceProtos.LockedResource.newBuilder(); builder .setResourceType(convertToProtoResourceType(lockedResource.getResourceType())) .setResourceName(lockedResource.getResourceName()) .setLockType(convertToProtoLockType(lockedResource.getLockType())); Procedure<?> exclusiveLockOwnerProcedure = lockedResource.getExclusiveLockOwnerProcedure(); if (exclusiveLockOwnerProcedure != null) { ProcedureProtos.Procedure exclusiveLockOwnerProcedureProto = convertToProtoProcedure(exclusiveLockOwnerProcedure); builder.setExclusiveLockOwnerProcedure(exclusiveLockOwnerProcedureProto); } builder.setSharedLockCount(lockedResource.getSharedLockCount()); for (Procedure<?> waitingProcedure : lockedResource.getWaitingProcedures()) { ProcedureProtos.Procedure waitingProcedureProto = convertToProtoProcedure(waitingProcedure); builder.addWaitingProcedures(waitingProcedureProto); } return builder.build(); }
private void printEntry(final ProcedureWALEntry entry) throws IOException { out.println("EntryType=" + entry.getType()); int procCount = entry.getProcedureCount(); for (int i = 0; i < procCount; i++) { Procedure<?> proc = ProcedureUtil.convertToProcedure(entry.getProcedure(i)); printProcedure(proc); } }
@Test public void testGetBackoffTimeMs() { for (int i = 30; i < 1000; i++) { assertEquals(TimeUnit.MINUTES.toMillis(10), ProcedureUtil.getBackoffTimeMs(30)); } long backoffTimeMs = ProcedureUtil.getBackoffTimeMs(0); assertTrue(backoffTimeMs >= 1000); assertTrue(backoffTimeMs <= 1000 * 1.01f); backoffTimeMs = ProcedureUtil.getBackoffTimeMs(1); assertTrue(backoffTimeMs >= 2000); assertTrue(backoffTimeMs <= 2000 * 1.01f); backoffTimeMs = ProcedureUtil.getBackoffTimeMs(5); assertTrue(backoffTimeMs >= 32000); assertTrue(backoffTimeMs <= 32000 * 1.01f); }
final Procedure proc = newProcedure(proto.getClassName());
private List<ProcedureProtos.Procedure> toProtos(TestProcedure... procs) { return Arrays.stream(procs).map(p -> { try { return ProcedureUtil.convertToProtoProcedure(p); } catch (IOException e) { throw new UncheckedIOException(e); } }).collect(Collectors.toList()); }
@Test public void testConvert() throws Exception { // check Procedure to protobuf conversion final TestProcedure proc1 = new TestProcedure(10, 1, new byte[] { 65 }); final ProcedureProtos.Procedure proto1 = ProcedureUtil.convertToProtoProcedure(proc1); final TestProcedure proc2 = (TestProcedure)ProcedureUtil.convertToProcedure(proto1); final ProcedureProtos.Procedure proto2 = ProcedureUtil.convertToProtoProcedure(proc2); assertEquals(false, proto2.hasResult()); assertEquals("Procedure protobuf does not match", proto1, proto2); }
public static LockServiceProtos.LockedResource convertToProtoLockedResource( LockedResource lockedResource) throws IOException { LockServiceProtos.LockedResource.Builder builder = LockServiceProtos.LockedResource.newBuilder(); builder .setResourceType(convertToProtoResourceType(lockedResource.getResourceType())) .setResourceName(lockedResource.getResourceName()) .setLockType(convertToProtoLockType(lockedResource.getLockType())); Procedure<?> exclusiveLockOwnerProcedure = lockedResource.getExclusiveLockOwnerProcedure(); if (exclusiveLockOwnerProcedure != null) { ProcedureProtos.Procedure exclusiveLockOwnerProcedureProto = convertToProtoProcedure(exclusiveLockOwnerProcedure); builder.setExclusiveLockOwnerProcedure(exclusiveLockOwnerProcedureProto); } builder.setSharedLockCount(lockedResource.getSharedLockCount()); for (Procedure<?> waitingProcedure : lockedResource.getWaitingProcedures()) { ProcedureProtos.Procedure waitingProcedureProto = convertToProtoProcedure(waitingProcedure); builder.addWaitingProcedures(waitingProcedureProto); } return builder.build(); } }
@Test public void testValidation() throws Exception { ProcedureUtil.validateClass(new TestProcedure(10)); }
public Procedure convert() throws IOException { if (procedure == null) { procedure = ProcedureUtil.convertToProcedure(proto); } return procedure; }
switchThrottleState(env, rpcThrottleEnabled); } catch (IOException e) { long backoff = ProcedureUtil.getBackoffTimeMs(this.attempts++); LOG.warn("Failed to store rpc throttle value {}, sleep {} secs and retry", rpcThrottleEnabled, backoff / 1000, e);
throws IOException { Procedure<?> proc = newProcedure(proto.getClassName());
public static void writeEntry(ByteSlot slot, ProcedureWALEntry.Type type, Procedure<?> proc, Procedure<?>[] subprocs) throws IOException { final ProcedureWALEntry.Builder builder = ProcedureWALEntry.newBuilder(); builder.setType(type); builder.addProcedure(ProcedureUtil.convertToProtoProcedure(proc)); if (subprocs != null) { for (int i = 0; i < subprocs.length; ++i) { builder.addProcedure(ProcedureUtil.convertToProtoProcedure(subprocs[i])); } } builder.build().writeDelimitedTo(slot); }
@Test public void testConvert() throws Exception { // check Procedure to protobuf conversion final TestProcedure proc1 = new TestProcedure(10, 1, new byte[] { 65 }); final ProcedureProtos.Procedure proto1 = ProcedureUtil.convertToProtoProcedure(proc1); final TestProcedure proc2 = (TestProcedure)ProcedureUtil.convertToProcedure(proto1); final ProcedureProtos.Procedure proto2 = ProcedureUtil.convertToProtoProcedure(proc2); assertEquals(false, proto2.hasResult()); assertEquals("Procedure protobuf does not match", proto1, proto2); }