Skip to content

Commit 27e4745

Browse files
committed
in getMultipleKeys reply, also return actualVersions
1 parent 8c50a96 commit 27e4745

File tree

3 files changed

+6
-4
lines changed

3 files changed

+6
-4
lines changed

src/main/protobuf/fossildbapi.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ message GetMultipleKeysReply {
7272
optional string errorMessage = 2;
7373
repeated string keys = 3;
7474
repeated bytes values = 4;
75+
repeated uint64 actualVersions = 5;
7576
}
7677

7778
message DeleteMultipleVersionsRequest {

src/main/scala/com/scalableminds/fossildb/FossilDBGrpcImpl.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ class FossilDBGrpcImpl(storeManager: StoreManager)
5555

5656
override def getMultipleKeys(req: GetMultipleKeysRequest) = withExceptionHandler(req) {
5757
val store = storeManager.getStore(req.collection)
58-
val (keys, values) = store.getMultipleKeys(req.key, req.prefix, req.version, req.limit)
59-
GetMultipleKeysReply(true, None, keys, values.map(ByteString.copyFrom(_)))
58+
val (keys, values, versions) = store.getMultipleKeys(req.key, req.prefix, req.version, req.limit)
59+
GetMultipleKeysReply(true, None, keys, values.map(ByteString.copyFrom(_)), versions)
6060
} {errorMsg => GetMultipleKeysReply(false, errorMsg)}
6161

6262
override def deleteMultipleVersions(req: DeleteMultipleVersionsRequest) = withExceptionHandler(req) {

src/main/scala/com/scalableminds/fossildb/db/VersionedKeyValueStore.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,14 +112,15 @@ class VersionedKeyValueStore(underlying: RocksDBStore) {
112112
}
113113
}
114114

115-
def getMultipleKeys(key: String, prefix: Option[String] = None, version: Option[Long] = None, limit: Option[Int]): (Seq[String], Seq[Array[Byte]]) = {
115+
def getMultipleKeys(key: String, prefix: Option[String] = None, version: Option[Long] = None, limit: Option[Int]): (Seq[String], Seq[Array[Byte]], Seq[Long]) = {
116116
requireValidKey(key)
117117
prefix.map{p => requireValidKey(p)}
118118
val iterator: Iterator[VersionedKeyValuePair[Array[Byte]]] = scanKeys(key, prefix, version)
119119
val asSequence = iterator.take(limit.getOrElse(Int.MaxValue)).toSeq
120120
val keys = asSequence.map(_.key)
121121
val values = asSequence.map(_.value)
122-
(keys, values)
122+
val versions = asSequence.map(_.version)
123+
(keys, values, versions)
123124
}
124125

125126
private def scanKeys(key: String, prefix: Option[String] = None, version: Option[Long] = None): Iterator[VersionedKeyValuePair[Array[Byte]]] =

0 commit comments

Comments
 (0)