Author: toad
Date: 2008-06-27 10:32:31 +0000 (Fri, 27 Jun 2008)
New Revision: 20811
Modified:
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
Log:
Cooldown related activation
Modified:
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2008-06-27 10:23:39 UTC (rev 20810)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2008-06-27 10:32:31 UTC (rev 20811)
@@ -24,6 +24,7 @@
import freenet.keys.CHKEncodeException;
import freenet.keys.ClientCHK;
import freenet.keys.ClientCHKBlock;
+import freenet.keys.ClientKey;
import freenet.keys.ClientKeyBlock;
import freenet.keys.Key;
import freenet.keys.NodeCHK;
@@ -687,7 +688,10 @@
int maxTries = blockFetchContext.maxNonSplitfileRetries;
for(int i=0;i<dataKeys.length;i++) {
if(dataKeys[i] == null) continue;
- if(dataKeys[i].getNodeKey().equals(key)) {
+ ClientKey k = dataKeys[i];
+ if(persistent)
+ container.activate(k, 5);
+ if(k.getNodeKey().equals(key)) {
if(dataCooldownTimes[i] > time) {
if(logMINOR)
Logger.minor(this, "Not
retrying after cooldown for data block "+i+"as deadline has not passed yet on
"+this);
@@ -701,11 +705,15 @@
sub.add(i, true, container, context);
if(!v.contains(sub)) v.add(sub);
notFound = false;
- }
+ } else
+ container.deactivate(k, 5);
}
for(int i=0;i<checkKeys.length;i++) {
if(checkKeys[i] == null) continue;
- if(checkKeys[i].getNodeKey().equals(key)) {
+ ClientKey k = checkKeys[i];
+ if(persistent)
+ container.activate(k, 5);
+ if(k.getNodeKey().equals(key)) {
if(checkCooldownTimes[i] > time) {
if(logMINOR)
Logger.minor(this, "Not
retrying after cooldown for data block "+i+" as deadline has not passed yet on
"+this);
@@ -719,7 +727,8 @@
sub.add(i+dataKeys.length, true, container,
context);
if(!v.contains(sub)) v.add(sub);
notFound = false;
- }
+ } else
+ container.deactivate(k, 5);
}
}
if(notFound) {
@@ -732,27 +741,47 @@
}
}
- public synchronized long getCooldownWakeupByKey(Key key) {
+ public synchronized long getCooldownWakeupByKey(Key key,
ObjectContainer container) {
for(int i=0;i<dataKeys.length;i++) {
if(dataKeys[i] == null) continue;
- if(dataKeys[i].getNodeKey().equals(key)) {
+ ClientKey k = dataKeys[i];
+ if(persistent)
+ container.activate(k, 5);
+ if(k.getNodeKey().equals(key)) {
return dataCooldownTimes[i];
- }
+ } else
+ container.deactivate(k, 5);
}
for(int i=0;i<checkKeys.length;i++) {
if(checkKeys[i] == null) continue;
+ ClientKey k = checkKeys[i];
+ if(persistent)
+ container.activate(k, 5);
if(checkKeys[i].getNodeKey().equals(key)) {
return checkCooldownTimes[i];
- }
+ } else
+ container.deactivate(k, 5);
}
return -1;
}
- public synchronized int getBlockNumber(Key key) {
- for(int i=0;i<dataKeys.length;i++)
- if(dataKeys[i] != null &&
dataKeys[i].getNodeKey().equals(key)) return i;
- for(int i=0;i<checkKeys.length;i++)
- if(checkKeys[i] != null &&
checkKeys[i].getNodeKey().equals(key)) return dataKeys.length+i;
+ public synchronized int getBlockNumber(Key key, ObjectContainer
container) {
+ for(int i=0;i<dataKeys.length;i++) {
+ ClientKey k = dataKeys[i];
+ if(k == null) continue;
+ if(persistent)
+ container.activate(k, 5);
+ if(k.equals(key)) return i;
+ else container.deactivate(k, 5);
+ }
+ for(int i=0;i<checkKeys.length;i++) {
+ ClientKey k = checkKeys[i];
+ if(k == null) continue;
+ if(persistent)
+ container.activate(k, 5);
+ if(k.equals(key)) return dataKeys.length+i;
+ else container.deactivate(k, 5);
+ }
return -1;
}
Modified:
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
===================================================================
---
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
2008-06-27 10:23:39 UTC (rev 20810)
+++
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
2008-06-27 10:32:31 UTC (rev 20811)
@@ -478,7 +478,7 @@
break;
}
}
- blockNo = segment.getBlockNumber(key);
+ blockNo = segment.getBlockNumber(key, container);
}
if(blockNo == -1) {
Logger.minor(this, "No block found for key "+key+" on
"+this);
@@ -546,7 +546,7 @@
container.activate(this, 1);
container.activate(segment, 1);
}
- return segment.getCooldownWakeupByKey(key);
+ return segment.getCooldownWakeupByKey(key, container);
}
public void resetCooldownTimes(ObjectContainer container) {