Skip to content

Commit 8ac4413

Browse files
committed
fix: use KeyValueAccess#write instead of lockForWriting
1 parent ca384ff commit 8ac4413

1 file changed

Lines changed: 11 additions & 4 deletions

File tree

src/main/java/org/janelia/saalfeldlab/n5/GsonKeyValueN5Writer.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@
2828
*/
2929
package org.janelia.saalfeldlab.n5;
3030

31-
import java.io.IOException;
31+
import java.io.OutputStreamWriter;
3232
import java.io.UncheckedIOException;
33+
import java.nio.charset.StandardCharsets;
3334
import java.util.Arrays;
3435
import java.util.List;
3536
import java.util.Map;
@@ -38,6 +39,7 @@
3839
import java.util.concurrent.ExecutionException;
3940
import java.util.concurrent.ExecutorService;
4041
import org.janelia.saalfeldlab.n5.N5Exception.N5IOException;
42+
import org.janelia.saalfeldlab.n5.readdata.ReadData;
4143
import org.janelia.saalfeldlab.n5.shard.PositionValueAccess;
4244

4345
import com.google.gson.Gson;
@@ -97,9 +99,14 @@ default void writeAttributes(
9799
final String normalGroupPath,
98100
final JsonElement attributes) throws N5Exception {
99101

100-
try (final LockedChannel lock = getKeyValueAccess().lockForWriting(absoluteAttributesPath(normalGroupPath))) {
101-
GsonUtils.writeAttributes(lock.newWriter(), attributes, getGson());
102-
} catch (final IOException | UncheckedIOException | N5IOException e) {
102+
final ReadData newAttributesReadData = ReadData.from(os -> {
103+
final OutputStreamWriter writer = new OutputStreamWriter(os, StandardCharsets.UTF_8);
104+
GsonUtils.writeAttributes(writer, attributes, getGson());
105+
});
106+
107+
try {
108+
getKeyValueAccess().write(absoluteAttributesPath(normalGroupPath), newAttributesReadData);
109+
} catch (UncheckedIOException | N5IOException e) {
103110
throw new N5Exception.N5IOException("Failed to write attributes into " + normalGroupPath, e);
104111
}
105112
}

0 commit comments

Comments
 (0)