diff --git a/app/src/main/java/com/futo/polycentric/core/ProcessHandle.kt b/app/src/main/java/com/futo/polycentric/core/ProcessHandle.kt index 257c6a5353b3a1105073fc78eaffd73215dfd577..d40ceb03ff205e791130888b9f7874905b0375a0 100644 --- a/app/src/main/java/com/futo/polycentric/core/ProcessHandle.kt +++ b/app/src/main/java/com/futo/polycentric/core/ProcessHandle.kt @@ -202,25 +202,27 @@ class ProcessHandle constructor( } private fun publish(contentType: Long, content: ByteArray, lwwElementSet: LWWElementSet?, lwwElement: LWWElement?, references: MutableList<Protocol.Reference>): Pointer { - val processState = Store.instance.getProcessState(system, processSecret.process) - val event = Event( - system, - processSecret.process, - processState.logicalClock + 1L, - contentType, - content, - Protocol.VectorClock.newBuilder().addAllLogicalClocks(listOf()).build(), - lwwElementSet, - lwwElement, - references, - processState.indices!!.toProto(), - unixMilliseconds = System.currentTimeMillis() - ) - - val eventBuffer = event.toProto().toByteArray() - val signedEvent = SignedEvent(processSecret.system.sign(eventBuffer), eventBuffer) - - return ingest(signedEvent) + synchronized(this) { + val processState = Store.instance.getProcessState(system, processSecret.process) + val event = Event( + system, + processSecret.process, + processState.logicalClock + 1L, + contentType, + content, + Protocol.VectorClock.newBuilder().addAllLogicalClocks(listOf()).build(), + lwwElementSet, + lwwElement, + references, + processState.indices!!.toProto(), + unixMilliseconds = System.currentTimeMillis() + ) + + val eventBuffer = event.toProto().toByteArray() + val signedEvent = SignedEvent(processSecret.system.sign(eventBuffer), eventBuffer) + + return ingest(signedEvent) + } } fun ingest(signedEvent: SignedEvent): Pointer { diff --git a/app/src/main/java/com/futo/polycentric/core/Synchronization.kt b/app/src/main/java/com/futo/polycentric/core/Synchronization.kt index db0b3d878897396ab927dfc843be1a34303b9fa9..dab6c4b8a7a0b7813287bd6f4083efe64ebe6c69 100644 --- a/app/src/main/java/com/futo/polycentric/core/Synchronization.kt +++ b/app/src/main/java/com/futo/polycentric/core/Synchronization.kt @@ -27,8 +27,10 @@ class Synchronization { } private fun ingest(processHandle: ProcessHandle, events: Protocol.Events) { - for (rawEvent in events.eventsList) { - processHandle.ingest(SignedEvent.fromProto(rawEvent)) + synchronized(processHandle) { + for (rawEvent in events.eventsList) { + processHandle.ingest(SignedEvent.fromProto(rawEvent)) + } } } @@ -72,8 +74,10 @@ class Synchronization { } fun saveBatch(processHandle: ProcessHandle, events: Protocol.Events) { - for (e in events.eventsList) { - processHandle.ingest(SignedEvent.fromProto(e)) + synchronized(processHandle) { + for (e in events.eventsList) { + processHandle.ingest(SignedEvent.fromProto(e)) + } } }