aboutsummaryrefslogtreecommitdiff
path: root/other/java/client/src
diff options
context:
space:
mode:
Diffstat (limited to 'other/java/client/src')
-rw-r--r--other/java/client/src/main/java/seaweedfs/client/SeaweedRead.java5
-rw-r--r--other/java/client/src/main/java/seaweedfs/client/VolumeIdCache.java7
2 files changed, 10 insertions, 2 deletions
diff --git a/other/java/client/src/main/java/seaweedfs/client/SeaweedRead.java b/other/java/client/src/main/java/seaweedfs/client/SeaweedRead.java
index 384636601..011462a17 100644
--- a/other/java/client/src/main/java/seaweedfs/client/SeaweedRead.java
+++ b/other/java/client/src/main/java/seaweedfs/client/SeaweedRead.java
@@ -64,10 +64,11 @@ public class SeaweedRead {
startOffset += gap;
}
- FilerProto.Locations locations = knownLocations.get(parseVolumeId(chunkView.fileId));
+ String volumeId = parseVolumeId(chunkView.fileId);
+ FilerProto.Locations locations = knownLocations.get(volumeId);
if (locations == null || locations.getLocationsCount() == 0) {
LOG.error("failed to locate {}", chunkView.fileId);
- // log here!
+ volumeIdCache.clearLocations(volumeId);
return 0;
}
diff --git a/other/java/client/src/main/java/seaweedfs/client/VolumeIdCache.java b/other/java/client/src/main/java/seaweedfs/client/VolumeIdCache.java
index fd2649cc2..86263fff9 100644
--- a/other/java/client/src/main/java/seaweedfs/client/VolumeIdCache.java
+++ b/other/java/client/src/main/java/seaweedfs/client/VolumeIdCache.java
@@ -26,6 +26,13 @@ public class VolumeIdCache {
return this.cache.getIfPresent(volumeId);
}
+ public void clearLocations(String volumeId) {
+ if (this.cache == null) {
+ return;
+ }
+ this.cache.invalidate(volumeId);
+ }
+
public void setLocations(String volumeId, FilerProto.Locations locations) {
if (this.cache == null) {
return;