From f87704b7622b27b30bd097a400e3063375c6f40d Mon Sep 17 00:00:00 2001 From: andrii0lomakin Date: Thu, 16 Jan 2025 09:16:50 +0100 Subject: [PATCH] Reimplementation of resetToNew method. --- .../exodus/entitystore/orientdb/OStoreTransaction.kt | 3 ++- .../exodus/entitystore/orientdb/OStoreTransactionImpl.kt | 5 ++++- .../exodus/entitystore/orientdb/OVertexEntity.kt | 8 ++++---- .../orientdb/OStoreTransactionLifecycleTest.kt | 4 ++-- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/entity-store/src/main/kotlin/jetbrains/exodus/entitystore/orientdb/OStoreTransaction.kt b/entity-store/src/main/kotlin/jetbrains/exodus/entitystore/orientdb/OStoreTransaction.kt index 1a508bdc6..6cc624e64 100644 --- a/entity-store/src/main/kotlin/jetbrains/exodus/entitystore/orientdb/OStoreTransaction.kt +++ b/entity-store/src/main/kotlin/jetbrains/exodus/entitystore/orientdb/OStoreTransaction.kt @@ -15,6 +15,7 @@ */ package jetbrains.exodus.entitystore.orientdb +import com.jetbrains.youtrack.db.api.DatabaseSession import com.jetbrains.youtrack.db.api.query.ResultSet import com.jetbrains.youtrack.db.api.record.DBRecord import com.jetbrains.youtrack.db.api.record.Vertex @@ -24,12 +25,12 @@ import jetbrains.exodus.entitystore.PersistentEntityId import jetbrains.exodus.entitystore.StoreTransaction interface OStoreTransaction : StoreTransaction { + val databaseSession: DatabaseSession fun getOEntityStore(): OEntityStore fun getTransactionId(): Long - fun requireActiveTransaction() fun requireActiveWritableTransaction() diff --git a/entity-store/src/main/kotlin/jetbrains/exodus/entitystore/orientdb/OStoreTransactionImpl.kt b/entity-store/src/main/kotlin/jetbrains/exodus/entitystore/orientdb/OStoreTransactionImpl.kt index 3236c029f..a980a7b1e 100644 --- a/entity-store/src/main/kotlin/jetbrains/exodus/entitystore/orientdb/OStoreTransactionImpl.kt +++ b/entity-store/src/main/kotlin/jetbrains/exodus/entitystore/orientdb/OStoreTransactionImpl.kt @@ -37,7 +37,7 @@ import jetbrains.exodus.env.ReadonlyTransactionException internal typealias TransactionEventHandler = (DatabaseSession, OStoreTransaction) -> Unit class OStoreTransactionImpl( - val session: DatabaseSession, + private val session: DatabaseSession, private val store: OPersistentEntityStore, private val schemaBuddy: OSchemaBuddy, private val onFinished: TransactionEventHandler, @@ -101,6 +101,9 @@ class OStoreTransactionImpl( return !isFinished && session.isActiveOnCurrentThread } + override val databaseSession: DatabaseSession + get() = session + override fun getOEntityStore(): OEntityStore { return store } diff --git a/entity-store/src/main/kotlin/jetbrains/exodus/entitystore/orientdb/OVertexEntity.kt b/entity-store/src/main/kotlin/jetbrains/exodus/entitystore/orientdb/OVertexEntity.kt index dae096f3b..ebd23b4ca 100644 --- a/entity-store/src/main/kotlin/jetbrains/exodus/entitystore/orientdb/OVertexEntity.kt +++ b/entity-store/src/main/kotlin/jetbrains/exodus/entitystore/orientdb/OVertexEntity.kt @@ -126,18 +126,18 @@ open class OVertexEntity(vertex: Vertex, private val store: OEntityStore) : OEnt } override fun resetToNew() { - val clusterId = vertexRecord.identity.clusterId + val identity = vertexRecord.identity as RecordId + val clusterId = identity.clusterId + identity.reset() - (vertexRecord.identity as RecordId).reset() + vertexRecord = store.requireActiveTransaction().databaseSession.newVertex(oEntityId.getTypeName()) (vertexRecord as RecordAbstract).also { - it.resetToNew() (it.identity as RecordId).clusterId = clusterId } } override fun generateId() { val type = oEntityId.getTypeName() - vertexRecord = store.currentTransaction!!.asOStoreTransaction().bindToSession(vertexRecord) store.requireActiveTransaction().generateEntityId(type, vertexRecord) oEntityId = ORIDEntityId.fromVertex(vertexRecord) } diff --git a/entity-store/src/test/kotlin/jetbrains/exodus/entitystore/orientdb/OStoreTransactionLifecycleTest.kt b/entity-store/src/test/kotlin/jetbrains/exodus/entitystore/orientdb/OStoreTransactionLifecycleTest.kt index d94717830..ecb86c1ec 100644 --- a/entity-store/src/test/kotlin/jetbrains/exodus/entitystore/orientdb/OStoreTransactionLifecycleTest.kt +++ b/entity-store/src/test/kotlin/jetbrains/exodus/entitystore/orientdb/OStoreTransactionLifecycleTest.kt @@ -106,10 +106,10 @@ class OStoreTransactionLifecycleTest : OTestMixin { val tx = beginTransaction() - val trista1 = tx.session.newVertex("trista") + val trista1 = tx.databaseSession.newVertex("trista") trista1.setProperty("name", "dvesti") trista1.save() - val trista2 = tx.session.newVertex("trista") + val trista2 = tx.databaseSession.newVertex("trista") trista2.setProperty("name", "dvesti") trista2.save()