ARTEMIS-255 make non-blocking-failover-timeout configurable

This commit is contained in:
jbertram 2015-10-12 13:38:56 -05:00
parent 5bfb7ac1ad
commit 717ddd1675
3 changed files with 14 additions and 5 deletions

View File

@ -72,7 +72,7 @@ public final class ActiveMQClient {
public static final long DEFAULT_CALL_TIMEOUT = 30000; public static final long DEFAULT_CALL_TIMEOUT = 30000;
public static final long DEFAULT_CALL_FAILOVER_TIMEOUT = -1; public static final long DEFAULT_CALL_FAILOVER_TIMEOUT = 30000;
public static final int DEFAULT_ACK_BATCH_SIZE = 1024 * 1024; public static final int DEFAULT_ACK_BATCH_SIZE = 1024 * 1024;

View File

@ -227,4 +227,7 @@ public interface ActiveMQClientMessageBundle {
@Message(id = 119060, value = "Large Message Transmission interrupted on consumer shutdown.") @Message(id = 119060, value = "Large Message Transmission interrupted on consumer shutdown.")
ActiveMQLargeMessageInterruptedException largeMessageInterrupted(); ActiveMQLargeMessageInterruptedException largeMessageInterrupted();
@Message(id = 119061, value = "Cannot send a packet while channel is failing over.")
IllegalStateException cannotSendPacketDuringFailover();
} }

View File

@ -228,9 +228,15 @@ public final class ChannelImpl implements Channel {
try { try {
if (failingOver) { if (failingOver) {
// TODO - don't hardcode this timeout
try { try {
failoverCondition.await(10000, TimeUnit.MILLISECONDS); if (connection.getBlockingCallFailoverTimeout() < 0) {
failoverCondition.await();
}
else {
if (!failoverCondition.await(connection.getBlockingCallFailoverTimeout(), TimeUnit.MILLISECONDS)) {
ActiveMQClientLogger.LOGGER.debug("timed-out waiting for fail-over condition on non-blocking send");
}
}
} }
catch (InterruptedException e) { catch (InterruptedException e) {
throw new ActiveMQInterruptedException(e); throw new ActiveMQInterruptedException(e);
@ -239,7 +245,7 @@ public final class ChannelImpl implements Channel {
// Sanity check // Sanity check
if (transferring) { if (transferring) {
throw new IllegalStateException("Cannot send a packet while channel is doing failover"); throw ActiveMQClientMessageBundle.BUNDLE.cannotSendPacketDuringFailover();
} }
if (resendCache != null && packet.isRequiresConfirmations()) { if (resendCache != null && packet.isRequiresConfirmations()) {
@ -302,7 +308,7 @@ public final class ChannelImpl implements Channel {
} }
else { else {
if (!failoverCondition.await(connection.getBlockingCallFailoverTimeout(), TimeUnit.MILLISECONDS)) { if (!failoverCondition.await(connection.getBlockingCallFailoverTimeout(), TimeUnit.MILLISECONDS)) {
ActiveMQClientLogger.LOGGER.debug("timed-out waiting for failover condition"); ActiveMQClientLogger.LOGGER.debug("timed-out waiting for fail-over condition on blocking send");
} }
} }
} }