private Object newOperationTimeoutException(boolean heartbeatTimeout) { StringBuilder sb = new StringBuilder(); if (heartbeatTimeout) { sb.append(invocation.op.getClass().getSimpleName()) .append(" invocation failed to complete due to operation-heartbeat-timeout. "); sb.append("Current time: ").append(timeToString(currentTimeMillis())).append(". "); sb.append("Start time: ").append(timeToString(invocation.firstInvocationTimeMillis)).append(". "); sb.append("Total elapsed time: ") .append(currentTimeMillis() - invocation.firstInvocationTimeMillis).append(" ms. "); long lastHeartbeatMillis = invocation.lastHeartbeatMillis; sb.append("Last operation heartbeat: "); appendHeartbeat(sb, lastHeartbeatMillis); long lastHeartbeatFromMemberMillis = invocation.context.invocationMonitor .getLastMemberHeartbeatMillis(invocation.invTarget); sb.append("Last operation heartbeat from member: "); appendHeartbeat(sb, lastHeartbeatFromMemberMillis); } else { sb.append(invocation.op.getClass().getSimpleName()) .append(" got rejected before execution due to not starting within the operation-call-timeout of: ") .append(invocation.callTimeoutMillis).append(" ms. "); sb.append("Current time: ").append(timeToString(currentTimeMillis())).append(". "); sb.append("Start time: ").append(timeToString(invocation.firstInvocationTimeMillis)).append(". "); sb.append("Total elapsed time: ") .append(currentTimeMillis() - invocation.firstInvocationTimeMillis).append(" ms. "); } sb.append(invocation); String msg = sb.toString(); return new ExecutionException(msg, new OperationTimeoutException(msg)); }
private Object newOperationTimeoutException(boolean heartbeatTimeout) { StringBuilder sb = new StringBuilder(); if (heartbeatTimeout) { sb.append(invocation.op.getClass().getSimpleName()) .append(" invocation failed to complete due to operation-heartbeat-timeout. "); sb.append("Current time: ").append(timeToString(currentTimeMillis())).append(". "); sb.append("Start time: ").append(timeToString(invocation.firstInvocationTimeMillis)).append(". "); sb.append("Total elapsed time: ") .append(currentTimeMillis() - invocation.firstInvocationTimeMillis).append(" ms. "); long lastHeartbeatMillis = invocation.lastHeartbeatMillis; sb.append("Last operation heartbeat: "); appendHeartbeat(sb, lastHeartbeatMillis); long lastHeartbeatFromMemberMillis = invocation.context.invocationMonitor .getLastMemberHeartbeatMillis(invocation.getTargetAddress()); sb.append("Last operation heartbeat from member: "); appendHeartbeat(sb, lastHeartbeatFromMemberMillis); } else { sb.append(invocation.op.getClass().getSimpleName()) .append(" got rejected before execution due to not starting within the operation-call-timeout of: ") .append(invocation.callTimeoutMillis).append(" ms. "); sb.append("Current time: ").append(timeToString(currentTimeMillis())).append(". "); sb.append("Start time: ").append(timeToString(invocation.firstInvocationTimeMillis)).append(". "); sb.append("Total elapsed time: ") .append(currentTimeMillis() - invocation.firstInvocationTimeMillis).append(" ms. "); } sb.append(invocation); String msg = sb.toString(); return new ExecutionException(msg, new OperationTimeoutException(msg)); }