Skip to content

Commit 9014fef

Browse files
committed
fix s3 store get range
1 parent bdcbc46 commit 9014fef

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

src/main/java/dev/zarr/zarrjava/store/S3Store.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public ByteBuffer get(String[] keys, long start) {
7171
GetObjectRequest req = GetObjectRequest.builder()
7272
.bucket(bucketName)
7373
.key(resolveKeys(keys))
74-
.range(String.valueOf(start))
74+
.range(String.format("bytes=%d-", start))
7575
.build();
7676
return get(req);
7777
}
@@ -82,7 +82,7 @@ public ByteBuffer get(String[] keys, long start, long end) {
8282
GetObjectRequest req = GetObjectRequest.builder()
8383
.bucket(bucketName)
8484
.key(resolveKeys(keys))
85-
.range(start +"-"+ end)
85+
.range(String.format("bytes=%d-%d", start, end-1)) // S3 range is inclusive
8686
.build();
8787
return get(req);
8888
}

src/test/java/dev/zarr/zarrjava/ZarrStoreTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,24 @@ public void testS3Store() throws IOException, ZarrException {
8686
Assertions.assertEquals(0, arrayCore.read(new long[]{0,0,0,0}, new int[]{1,1,1,1}).getInt(0));
8787
}
8888

89+
@Test
90+
public void testS3StoreGet() throws IOException, ZarrException {
91+
S3Store s3Store = new S3Store(S3Client.builder()
92+
.region(Region.of("eu-west-1"))
93+
.credentialsProvider(AnonymousCredentialsProvider.create())
94+
.build(), "static.webknossos.org", "data");
95+
String[] keys = new String[]{"zarr_v3", "l4_sample", "color", "1", "zarr.json"};
96+
97+
ByteBuffer buffer = s3Store.get(keys);
98+
ByteBuffer bufferWithStart = s3Store.get(keys, 10);
99+
Assertions.assertEquals(10, buffer.remaining()-bufferWithStart.remaining());
100+
101+
ByteBuffer bufferWithStartAndEnd = s3Store.get(keys, 0, 10);
102+
Assertions.assertEquals(10, bufferWithStartAndEnd.remaining());
103+
104+
}
105+
106+
89107
@Test
90108
public void testHttpStore() throws IOException, ZarrException {
91109
HttpStore httpStore = new dev.zarr.zarrjava.store.HttpStore("https://static.webknossos.org/data/zarr_v3/l4_sample");

0 commit comments

Comments
 (0)