Skip to content

Commit

Permalink
Remove the need of a second recyclableByteArray
Browse files Browse the repository at this point in the history
  • Loading branch information
jurmous committed Sep 20, 2024
1 parent bb85157 commit 3134aef
Show file tree
Hide file tree
Showing 5 changed files with 2 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,3 @@ import kotlin.native.concurrent.ThreadLocal

@ThreadLocal
actual val recyclableByteArray = ByteArray(10000)

@ThreadLocal
actual val recyclableByteArray2 = ByteArray(10000)
3 changes: 0 additions & 3 deletions lib/src/commonMain/kotlin/maryk/lib/RecyclableByteArrays.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,3 @@ package maryk.lib

/** Short term recyclable byte array which is thread local */
expect val recyclableByteArray: ByteArray

/** Secondary short term recyclable byte array which is thread local */
expect val recyclableByteArray2: ByteArray
2 changes: 0 additions & 2 deletions lib/src/jsMain/kotlin/maryk/lib/RecyclableByteArrays.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
package maryk.lib

actual val recyclableByteArray = ByteArray(10000)

actual val recyclableByteArray2 = ByteArray(10000)
2 changes: 0 additions & 2 deletions lib/src/jvmMain/kotlin/maryk/lib/RecyclableByteArray.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package maryk.lib

val localB1 = ThreadLocal.withInitial { ByteArray(10000) }!!
val localB2 = ThreadLocal.withInitial { ByteArray(10000) }!!

actual val recyclableByteArray get() = localB1.get()!!
actual val recyclableByteArray2 get() = localB2.get()!!
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import maryk.datastore.rocksdb.DBAccessor
import maryk.datastore.rocksdb.TableColumnFamilies
import maryk.datastore.rocksdb.processors.LAST_VERSION_INDICATOR
import maryk.lib.recyclableByteArray
import maryk.lib.recyclableByteArray2
import org.rocksdb.ReadOptions
import org.rocksdb.RocksDB

Expand All @@ -18,11 +17,11 @@ internal fun <DM: IsRootDataModel> getLastVersion(dbAccessor: DBAccessor, column
key.bytes.copyInto(recyclableByteArray)
recyclableByteArray[key.bytes.size] = LAST_VERSION_INDICATOR

val valueLength = dbAccessor.get(columnFamilies.table, readOptions, recyclableByteArray, 0, key.size + 1, recyclableByteArray2)
val valueLength = dbAccessor.get(columnFamilies.table, readOptions, recyclableByteArray, 0, key.size + 1, recyclableByteArray, key.size + 2, recyclableByteArray.size - (key.size + 2))

if (valueLength == RocksDB.NOT_FOUND) {
throw StorageException("Can only retrieve last versions of existing objects")
}

return recyclableByteArray2.readVersionBytes()
return recyclableByteArray.readVersionBytes(key.size + 2)
}

0 comments on commit 3134aef

Please sign in to comment.