diff --git a/src/catalog/backends/datadir/src/main/java/org/geoserver/cloud/config/catalog/backend/datadirectory/DataDirectoryUpdateSequence.java b/src/catalog/backends/datadir/src/main/java/org/geoserver/cloud/config/catalog/backend/datadirectory/DataDirectoryUpdateSequence.java index 8e6b8a6a0..8694d3542 100644 --- a/src/catalog/backends/datadir/src/main/java/org/geoserver/cloud/config/catalog/backend/datadirectory/DataDirectoryUpdateSequence.java +++ b/src/catalog/backends/datadir/src/main/java/org/geoserver/cloud/config/catalog/backend/datadirectory/DataDirectoryUpdateSequence.java @@ -176,18 +176,24 @@ protected Properties load(Resource resource) throws IOException { /** Precondition: be called while holding the {@link #lock()} */ private void initialize(Resource resource) throws IOException { + Optional global = loadGlobalInfo(); + final long initialValue = global.map(GeoServerInfo::getUpdateSequence).orElse(0L); + save(resource, initialValue); + } + + private Optional loadGlobalInfo() throws IOException { GeoServerInfo geoServerInfo = null; if (null == geoServer) { Resource configResource = dd.config(new GeoServerInfoImpl()); if (Resources.exists(configResource)) { - geoServerInfo = persister().load(configResource.in(), GeoServerInfo.class); + byte[] contents = configResource.getContents(); + ByteArrayInputStream in = new ByteArrayInputStream(contents); + geoServerInfo = persister().load(in, GeoServerInfo.class); } } else { geoServerInfo = geoServer.getGlobal(); } - final long initialValue = - Optional.ofNullable(geoServerInfo).map(GeoServerInfo::getUpdateSequence).orElse(0L); - save(resource, initialValue); + return Optional.ofNullable(geoServerInfo); } protected Resource resource() {