ARTEMIS-892 - add lock to tick method

https://issues.apache.org/jira/browse/ARTEMIS-892
This commit is contained in:
Andy Taylor 2016-12-16 12:11:40 +00:00
parent db6ee74a33
commit 198143edd0
1 changed files with 14 additions and 12 deletions

View File

@ -91,22 +91,24 @@ public class ProtonHandler extends ProtonInitializable {
}
public long tick(boolean firstTick) {
if (!firstTick) {
try {
if (connection.getLocalState() != EndpointState.CLOSED) {
long rescheduleAt = transport.tick(TimeUnit.NANOSECONDS.toMillis(System.nanoTime()));
if (transport.isClosed()) {
throw new IllegalStateException("Channel was inactive for to long");
synchronized (lock) {
if (!firstTick) {
try {
if (connection.getLocalState() != EndpointState.CLOSED) {
long rescheduleAt = transport.tick(TimeUnit.NANOSECONDS.toMillis(System.nanoTime()));
if (transport.isClosed()) {
throw new IllegalStateException("Channel was inactive for to long");
}
return rescheduleAt;
}
return rescheduleAt;
} catch (Exception e) {
transport.close();
connection.setCondition(new ErrorCondition());
}
} catch (Exception e) {
transport.close();
connection.setCondition(new ErrorCondition());
return 0;
}
return 0;
return transport.tick(TimeUnit.NANOSECONDS.toMillis(System.nanoTime()));
}
return transport.tick(TimeUnit.NANOSECONDS.toMillis(System.nanoTime()));
}
public int capacity() {