Skip to content

Commit 7477ec1

Browse files
authored
Merge pull request #37 from scalableminds/debug-slow-seek
Update sbt, clean up code style, type annotations
2 parents dce97c0 + 0366cf4 commit 7477ec1

File tree

13 files changed

+179
-201
lines changed

13 files changed

+179
-201
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ lib_managed/
1515
src_managed/
1616
project/boot/
1717
project/plugins/project/
18+
.bsp
1819

1920
# Scala-IDE specific
2021
.scala_dependencies

build.sbt

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
1-
import sbtbuildinfo.BuildInfoKeys.{buildInfoKeys, buildInfoOptions, buildInfoPackage}
2-
import sbtbuildinfo.{BuildInfoKey, BuildInfoOption}
1+
import sbt._
32

43
name := "fossildb"
54

65
def getVersionFromGit: String = {
7-
def run(cmd: String): String = (new java.io.BufferedReader(new java.io.InputStreamReader(java.lang.Runtime.getRuntime().exec(cmd).getInputStream()))).readLine()
6+
def run(cmd: String): String = new java.io.BufferedReader(new java.io.InputStreamReader(java.lang.Runtime.getRuntime.exec(cmd).getInputStream)).readLine()
87
def getBranch = run("git rev-parse --abbrev-ref HEAD")
98

10-
if (sys.env.get("CI").isDefined && getBranch == "master") {
9+
if (sys.env.contains("CI") && getBranch == "master") {
1110
val oldVersion = run("git describe --tags --abbrev=0").split('.').toList.map(_.toInt)
1211
(oldVersion.init :+ (oldVersion.last + 1)).mkString(".")
1312
} else {
@@ -17,7 +16,7 @@ def getVersionFromGit: String = {
1716

1817
version := getVersionFromGit
1918

20-
scalaVersion := "2.12.4"
19+
scalaVersion := "2.12.15"
2120

2221
libraryDependencies ++= Seq(
2322
"ch.qos.logback" % "logback-classic" % "1.2.3",
@@ -30,31 +29,31 @@ libraryDependencies ++= Seq(
3029
"com.github.scopt" %% "scopt" % "3.7.0"
3130
)
3231

33-
managedSourceDirectories in Compile += target.value / "protobuf-generated"
32+
Compile / managedSourceDirectories += target.value / "protobuf-generated"
3433

35-
PB.targets in Compile := Seq(
34+
Compile / PB.targets := Seq(
3635
scalapb.gen() -> (target.value / "protobuf-generated")
3736
)
3837

39-
mainClass in Compile := Some("com.scalableminds.fossildb.FossilDB")
38+
Compile / mainClass := Some("com.scalableminds.fossildb.FossilDB")
4039

41-
assemblyMergeStrategy in assembly := {
40+
assembly / assemblyMergeStrategy := {
4241
case x if x.endsWith("io.netty.versions.properties") => MergeStrategy.first
4342
case x =>
44-
val oldStrategy = (assemblyMergeStrategy in assembly).value
43+
val oldStrategy = (assembly / assemblyMergeStrategy).value
4544
oldStrategy(x)
4645
}
4746

48-
assemblyJarName in assembly := "fossildb.jar"
47+
assembly / assemblyJarName := "fossildb.jar"
4948

5049

5150
lazy val buildInfoSettings = Seq(
5251
buildInfoKeys := Seq[BuildInfoKey](version,
5352
"commitHash" -> new java.lang.Object() {
54-
override def toString(): String = {
53+
override def toString: String = {
5554
try {
56-
val extracted = new java.io.InputStreamReader(java.lang.Runtime.getRuntime().exec("git rev-parse HEAD").getInputStream())
57-
(new java.io.BufferedReader(extracted)).readLine()
55+
val extracted = new java.io.InputStreamReader(java.lang.Runtime.getRuntime.exec("git rev-parse HEAD").getInputStream)
56+
new java.io.BufferedReader(extracted).readLine()
5857
} catch {
5958
case t: Throwable => "get git hash failed"
6059
}
@@ -69,4 +68,4 @@ lazy val root = (project in file(".")).
6968
enablePlugins(BuildInfoPlugin).
7069
settings(
7170
buildInfoSettings
72-
)
71+
)

project/build.properties

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
sbt.version = 0.13.15
2-
1+
sbt.version = 1.6.2

project/buildinfo.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.7.0")
1+
addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.9.0")

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

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,19 @@ import fossildb.BuildInfo
88

99
import scala.concurrent.ExecutionContext
1010

11-
object ConfigDefaults {val port = 7155; val dataDir = "data"; val backupDir = "backup"; val columnFamilies = List(); val rocksOptionsFile = None}
11+
object ConfigDefaults {val port: Int = 7155; val dataDir: String = "data"; val backupDir: String = "backup"; val columnFamilies: List[String] = List(); val rocksOptionsFile: Option[String] = None}
1212
case class Config(port: Int = ConfigDefaults.port, dataDir: String = ConfigDefaults.dataDir,
1313
backupDir: String = ConfigDefaults.backupDir, columnFamilies: List[String] = ConfigDefaults.columnFamilies,
1414
rocksOptionsFile: Option[String] = ConfigDefaults.rocksOptionsFile)
1515

1616
object FossilDB extends LazyLogging {
17-
def main(args: Array[String]) = {
17+
def main(args: Array[String]): Unit = {
1818

1919
if (args.contains("--version"))
2020
println(BuildInfo.version)
2121
else {
2222
parseArguments(args) match {
23-
case Some(config) => {
23+
case Some(config) =>
2424
logger.info("Starting FossilDB")
2525
logger.info("BuildInfo: (" + BuildInfo + ")")
2626
logger.info("Config: " + config)
@@ -31,14 +31,12 @@ object FossilDB extends LazyLogging {
3131

3232
server.start()
3333
server.blockUntilShutdown()
34-
35-
}
3634
case None => ()
3735
}
3836
}
3937
}
4038

41-
def parseArguments(args: Array[String]) = {
39+
private def parseArguments(args: Array[String]) = {
4240
val parser = new scopt.OptionParser[Config]("fossildb") {
4341

4442
opt[Int]('p', "port").valueName("<num>").action( (x, c) =>

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

Lines changed: 46 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
1-
/*
2-
* Copyright (C) 2011-2017 scalable minds UG (haftungsbeschränkt) & Co. KG. <http://scm.io>
3-
*/
41
package com.scalableminds.fossildb
52

63
import java.io.{PrintWriter, StringWriter}
74

85
import com.google.protobuf.ByteString
96
import com.scalableminds.fossildb.db.StoreManager
107
import com.scalableminds.fossildb.proto.fossildbapi._
11-
import com.trueaccord.scalapb.GeneratedMessage
8+
import scalapb.GeneratedMessage
129
import com.typesafe.scalalogging.LazyLogging
1310

1411
import scala.concurrent.Future
@@ -17,102 +14,100 @@ class FossilDBGrpcImpl(storeManager: StoreManager)
1714
extends FossilDBGrpc.FossilDB
1815
with LazyLogging {
1916

20-
override def health(req: HealthRequest) = withExceptionHandler(req) {
21-
HealthReply(true)
22-
} { errorMsg => HealthReply(false, errorMsg) }
17+
override def health(req: HealthRequest): Future[HealthReply] = withExceptionHandler(req) {
18+
HealthReply(success = true)
19+
} { errorMsg => HealthReply(success = false, errorMsg) }
2320

24-
override def get(req: GetRequest) = withExceptionHandler(req) {
21+
override def get(req: GetRequest): Future[GetReply] = withExceptionHandler(req) {
2522
val store = storeManager.getStore(req.collection)
2623
val versionedKeyValuePairOpt = store.get(req.key, req.version)
2724
versionedKeyValuePairOpt match {
28-
case Some(pair) => GetReply(true, None, ByteString.copyFrom(pair.value), pair.version)
29-
case None => {
30-
if (!(req.mayBeEmpty.getOrElse(false))) throw new NoSuchElementException
31-
GetReply(false, Some("No such element"), ByteString.EMPTY, 0)
32-
}
25+
case Some(pair) => GetReply(success = true, None, ByteString.copyFrom(pair.value), pair.version)
26+
case None =>
27+
if (!req.mayBeEmpty.getOrElse(false)) throw new NoSuchElementException
28+
GetReply(success = false, Some("No such element"), ByteString.EMPTY, 0)
3329
}
34-
} { errorMsg => GetReply(false, errorMsg, ByteString.EMPTY, 0) }
30+
} { errorMsg => GetReply(success = false, errorMsg, ByteString.EMPTY, 0) }
3531

36-
override def put(req: PutRequest) = withExceptionHandler(req) {
32+
override def put(req: PutRequest): Future[PutReply] = withExceptionHandler(req) {
3733
val store = storeManager.getStore(req.collection)
3834
val version = req.version.getOrElse(store.get(req.key, None).map(_.version + 1).getOrElse(0L))
3935
require(version >= 0, "Version numbers must be non-negative")
4036
store.put(req.key, version, req.value.toByteArray)
41-
PutReply(true)
42-
} { errorMsg => PutReply(false, errorMsg) }
37+
PutReply(success = true)
38+
} { errorMsg => PutReply(success = false, errorMsg) }
4339

44-
override def delete(req: DeleteRequest) = withExceptionHandler(req) {
40+
override def delete(req: DeleteRequest): Future[DeleteReply] = withExceptionHandler(req) {
4541
val store = storeManager.getStore(req.collection)
4642
store.delete(req.key, req.version)
47-
DeleteReply(true)
48-
} { errorMsg => DeleteReply(false, errorMsg) }
43+
DeleteReply(success = true)
44+
} { errorMsg => DeleteReply(success = false, errorMsg) }
4945

50-
override def getMultipleVersions(req: GetMultipleVersionsRequest) = withExceptionHandler(req) {
46+
override def getMultipleVersions(req: GetMultipleVersionsRequest): Future[GetMultipleVersionsReply] = withExceptionHandler(req) {
5147
val store = storeManager.getStore(req.collection)
5248
val (values, versions) = store.getMultipleVersions(req.key, req.oldestVersion, req.newestVersion)
53-
GetMultipleVersionsReply(true, None, values.map(ByteString.copyFrom(_)), versions)
54-
} { errorMsg => GetMultipleVersionsReply(false, errorMsg) }
49+
GetMultipleVersionsReply(success = true, None, values.map(ByteString.copyFrom), versions)
50+
} { errorMsg => GetMultipleVersionsReply(success = false, errorMsg) }
5551

56-
override def getMultipleKeys(req: GetMultipleKeysRequest) = withExceptionHandler(req) {
52+
override def getMultipleKeys(req: GetMultipleKeysRequest): Future[GetMultipleKeysReply] = withExceptionHandler(req) {
5753
val store = storeManager.getStore(req.collection)
5854
val (keys, values, versions) = store.getMultipleKeys(req.key, req.prefix, req.version, req.limit)
59-
GetMultipleKeysReply(true, None, keys, values.map(ByteString.copyFrom(_)), versions)
60-
} { errorMsg => GetMultipleKeysReply(false, errorMsg) }
55+
GetMultipleKeysReply(success = true, None, keys, values.map(ByteString.copyFrom), versions)
56+
} { errorMsg => GetMultipleKeysReply(success = false, errorMsg) }
6157

62-
override def deleteMultipleVersions(req: DeleteMultipleVersionsRequest) = withExceptionHandler(req) {
58+
override def deleteMultipleVersions(req: DeleteMultipleVersionsRequest): Future[DeleteMultipleVersionsReply] = withExceptionHandler(req) {
6359
val store = storeManager.getStore(req.collection)
6460
store.deleteMultipleVersions(req.key, req.oldestVersion, req.newestVersion)
65-
DeleteMultipleVersionsReply(true)
66-
} { errorMsg => DeleteMultipleVersionsReply(false, errorMsg) }
61+
DeleteMultipleVersionsReply(success = true)
62+
} { errorMsg => DeleteMultipleVersionsReply(success = false, errorMsg) }
6763

68-
override def listKeys(req: ListKeysRequest) = withExceptionHandler(req) {
64+
override def listKeys(req: ListKeysRequest): Future[ListKeysReply] = withExceptionHandler(req) {
6965
val store = storeManager.getStore(req.collection)
7066
val keys = store.listKeys(req.limit, req.startAfterKey)
71-
ListKeysReply(true, None, keys)
72-
} { errorMsg => ListKeysReply(false, errorMsg) }
67+
ListKeysReply(success = true, None, keys)
68+
} { errorMsg => ListKeysReply(success = false, errorMsg) }
7369

74-
override def listVersions(req: ListVersionsRequest) = withExceptionHandler(req) {
70+
override def listVersions(req: ListVersionsRequest): Future[ListVersionsReply] = withExceptionHandler(req) {
7571
val store = storeManager.getStore(req.collection)
7672
val versions = store.listVersions(req.key, req.limit, req.offset)
77-
ListVersionsReply(true, None, versions)
78-
} { errorMsg => ListVersionsReply(false, errorMsg) }
73+
ListVersionsReply(success = true, None, versions)
74+
} { errorMsg => ListVersionsReply(success = false, errorMsg) }
7975

80-
override def backup(req: BackupRequest) = withExceptionHandler(req) {
76+
override def backup(req: BackupRequest): Future[BackupReply] = withExceptionHandler(req) {
8177
val backupInfoOpt = storeManager.backup
8278
backupInfoOpt match {
83-
case Some(backupInfo) => BackupReply(true, None, backupInfo.id, backupInfo.timestamp, backupInfo.size)
79+
case Some(backupInfo) => BackupReply(success = true, None, backupInfo.id, backupInfo.timestamp, backupInfo.size)
8480
case _ => throw new Exception("Backup did not return valid BackupInfo")
8581
}
86-
} { errorMsg => BackupReply(false, errorMsg, 0, 0, 0) }
82+
} { errorMsg => BackupReply(success = false, errorMsg, 0, 0, 0) }
8783

88-
override def restoreFromBackup(req: RestoreFromBackupRequest) = withExceptionHandler(req) {
89-
storeManager.restoreFromBackup
90-
RestoreFromBackupReply(true)
91-
} { errorMsg => RestoreFromBackupReply(false, errorMsg) }
84+
override def restoreFromBackup(req: RestoreFromBackupRequest): Future[RestoreFromBackupReply] = withExceptionHandler(req) {
85+
storeManager.restoreFromBackup()
86+
RestoreFromBackupReply(success = true)
87+
} { errorMsg => RestoreFromBackupReply(success = false, errorMsg) }
9288

93-
override def compactAllData(req: CompactAllDataRequest) = withExceptionHandler(req) {
89+
override def compactAllData(req: CompactAllDataRequest): Future[CompactAllDataReply] = withExceptionHandler(req) {
9490
storeManager.compactAllData()
95-
CompactAllDataReply(true)
96-
} { errorMsg => CompactAllDataReply(false, errorMsg) }
91+
CompactAllDataReply(success = true)
92+
} { errorMsg => CompactAllDataReply(success = false, errorMsg) }
9793

98-
override def exportDB(req: ExportDBRequest) = withExceptionHandler(req) {
94+
override def exportDB(req: ExportDBRequest): Future[ExportDBReply] = withExceptionHandler(req) {
9995
storeManager.exportDB(req.newDataDir, req.optionsFile)
100-
ExportDBReply(true)
101-
} { errorMsg => ExportDBReply(false, errorMsg) }
96+
ExportDBReply(success = true)
97+
} { errorMsg => ExportDBReply(success = false, errorMsg) }
10298

10399
private def withExceptionHandler[T, R <: GeneratedMessage](request: R)(tryBlock: => T)(onErrorBlock: Option[String] => T): Future[T] = {
104100
try {
105101
logger.debug("received " + requestToString(request))
106102
Future.successful(tryBlock)
107103
} catch {
108-
case e: Exception => {
104+
case e: Exception =>
109105
log(e, request)
110106
Future.successful(onErrorBlock(Some(e.toString)))
111-
}
112107
}
113108
}
114109

115-
private def log[R <: GeneratedMessage](e: Exception, request: R) = {
110+
private def log[R <: GeneratedMessage](e: Exception, request: R): Unit = {
116111
logger.warn(getStackTraceAsString(e) + "\nrequest that caused this error: " + requestToString(request) + "\n")
117112
}
118113

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

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
/*
2-
* Copyright (C) 2011-2017 scalable minds UG (haftungsbeschränkt) & Co. KG. <http://scm.io>
3-
*/
41
package com.scalableminds.fossildb
52

63
import com.scalableminds.fossildb.db.StoreManager
@@ -22,7 +19,7 @@ class FossilDBServer(storeManager: StoreManager, port: Int, executionContext: Ex
2219
healthStatusManager = new HealthStatusManager()
2320
server = NettyServerBuilder.forPort(port).maxMessageSize(Int.MaxValue)
2421
.addService(FossilDBGrpc.bindService(new FossilDBGrpcImpl(storeManager), executionContext))
25-
.addService(healthStatusManager.getHealthService())
22+
.addService(healthStatusManager.getHealthService)
2623
.build.start
2724
healthStatusManager.setStatus("", HealthCheckResponse.ServingStatus.SERVING)
2825
logger.info("Server started, listening on " + port)
@@ -48,6 +45,3 @@ class FossilDBServer(storeManager: StoreManager, port: Int, executionContext: Ex
4845
}
4946

5047
}
51-
52-
53-

0 commit comments

Comments
 (0)