@@ -36,6 +36,7 @@ import org.modelix.streams.IExecutableStream
3636import org.modelix.streams.IStream
3737import org.modelix.streams.getBlocking
3838import org.modelix.streams.iterateBlocking
39+ import org.modelix.streams.plus
3940import org.slf4j.LoggerFactory
4041import java.util.UUID
4142
@@ -390,9 +391,16 @@ class RepositoriesManager(val stores: StoreManager) : IRepositoriesManager {
390391 val store = stores.getAsyncStore(repository?.takeIf { isIsolated(it) ? : false })
391392 return store.getStreamExecutor().queryManyLater {
392393 val version = CLVersion .loadFromHash(versionHash, store)
393- IStream .many(filter.knownVersions).flatMap { CLVersion .tryLoadFromHash(it, store) }.toList().flatMap { knownVersions ->
394- version.diff(knownVersions, filter).map { it.getHashString() to it.data.serialize() }
395- }
394+
395+ val diff = IStream .many(filter.knownVersions).flatMap { CLVersion .tryLoadFromHash(it, store) }.toList()
396+ .flatMap { knownVersions ->
397+ version.diff(knownVersions, filter)
398+ }
399+ val versionHash = version.getObjectHash()
400+ // The version itself is always included, because version objects on the client are weakly referenced,
401+ // and it may already be garbage collected.
402+ (IStream .of(version.asObject()) + diff.filter { it.getHash() != versionHash })
403+ .map { it.getHashString() to it.data.serialize() }
396404 }.let { ObjectDataFlow (it) }
397405 }
398406
0 commit comments