Author: nextgens
Date: 2008-08-18 15:14:19 +0000 (Mon, 18 Aug 2008)
New Revision: 22010
Modified:
trunk/freenet/src/freenet/node/KeyTracker.java
Log:
KeyTracker: more work on synchronization related issues
Modified: trunk/freenet/src/freenet/node/KeyTracker.java
===================================================================
--- trunk/freenet/src/freenet/node/KeyTracker.java 2008-08-18 14:17:37 UTC
(rev 22009)
+++ trunk/freenet/src/freenet/node/KeyTracker.java 2008-08-18 15:14:19 UTC
(rev 22010)
@@ -411,7 +411,9 @@
* @throws UpdatableSortedLinkedListKilledException
*/
private void removeResendRequest(int seqNumber) throws
UpdatableSortedLinkedListKilledException {
- resendRequestQueue.removeByKey(seqNumber);
+ synchronized(resendRequestQueue) {
+ resendRequestQueue.removeByKey(seqNumber);
+ }
}
/**
@@ -486,14 +488,18 @@
* Is an ack request queued for this packet number?
*/
private boolean queuedAckRequest(int packetNumber) {
- return ackRequestQueue.containsKey(new Integer(packetNumber));
+ synchronized(ackRequestQueue) {
+ return ackRequestQueue.containsKey(packetNumber);
+ }
}
/**
* Is a resend request queued for this packet number?
*/
private boolean queuedResendRequest(int packetNumber) {
- return resendRequestQueue.containsKey(new
Integer(packetNumber));
+ synchronized(resendRequestQueue) {
+ return resendRequestQueue.containsKey(packetNumber);
+ }
}
/**
@@ -579,7 +585,11 @@
* @throws UpdatableSortedLinkedListKilledException
*/
private void removeAckRequest(int seqNo) throws
UpdatableSortedLinkedListKilledException {
- QueuedAckRequest qr = (QueuedAckRequest)
ackRequestQueue.removeByKey(seqNo);
+ QueuedAckRequest qr = null;
+
+ synchronized(ackRequestQueue) {
+ qr = (QueuedAckRequest)
ackRequestQueue.removeByKey(seqNo);
+ }
if(qr != null)
qr.onAcked();
else
@@ -941,8 +951,12 @@
synchronized(ackQueue) {
ackQueue.clear();
}
- resendRequestQueue.kill();
- ackRequestQueue.kill();
+ synchronized(resendRequestQueue) {
+ resendRequestQueue.kill();
+ }
+ synchronized(ackRequestQueue) {
+ ackRequestQueue.kill();
+ }
synchronized(packetsToResend) {
packetsToResend.clear();
}
@@ -1046,7 +1060,9 @@
}
public int countAckRequests() {
- return ackRequestQueue.size();
+ synchronized(ackRequestQueue) {
+ return ackRequestQueue.size();
+ }
}
public int countResendRequests() {