Skip to content

Commit b875de1

Browse files
authored
Merge pull request #42 from scalableminds/scala213
scala 2.13, sbt 1.9, jvm 11, upgraded dependencies
2 parents 3e5cecc + 02eb7d7 commit b875de1

File tree

13 files changed

+51
-55
lines changed

13 files changed

+51
-55
lines changed

.circleci/config.yml

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,13 @@ jobs:
44
machine:
55
image: ubuntu-2004:202111-02
66
environment:
7-
SBT_VERSION_TAG: sbt-0.13.15_mongo-3.2.17_node-8.x_jdk-8
7+
SBT_VERSION_TAG: master__6469160879
88
USER_UID: 1000
99
USER_GID: 1000
10-
TARGET_DIR: target/scala-2.12
10+
TARGET_DIR: target/scala-2.13
1111
steps:
1212
- checkout
1313

14-
- run:
15-
name: Prepare dependency folders
16-
command: mkdir -p ~/.m2 ~/.ivy2 ~/.sbt
17-
18-
- restore_cache:
19-
key: cache-{{ .Branch }}
20-
2114
- run:
2215
name: Build server
2316
command: docker-compose run -T -e CI=$CI sbt sbt assembly
@@ -26,13 +19,6 @@ jobs:
2619
name: Get FossilDB version
2720
command: docker-compose run -T sbt java -jar $TARGET_DIR/fossildb.jar --version > $TARGET_DIR/version
2821

29-
- save_cache:
30-
key: cache-{{ .Branch }}
31-
paths:
32-
- "~/.m2"
33-
- "~/.ivy2"
34-
- "~/.sbt"
35-
3622
- run:
3723
name: Build server docker image
3824
command: |

Changelog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
## Breaking Changes
44

55
- The `GetMultipleKeys` call now takes a `startAfterKey` instead of a `key` for pagination. The returned list will only start *after* this key. [#38](https://github.com/scalableminds/fossildb/pull/38)
6+
- Now needs Java 11+
67

78
## Fixes
89

Dockerfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
FROM openjdk:8-jdk
1+
FROM openjdk:11-jdk
22

33
RUN apt-get update && apt-get install -y --no-install-recommends gosu && rm -rf /var/lib/apt/lists/*
44
RUN mkdir -p /fossildb
55
WORKDIR /fossildb
66

7-
COPY target/scala-2.12/fossildb.jar .
7+
COPY target/scala-2.13/fossildb.jar .
88
COPY fossildb .
99

1010
RUN groupadd -r fossildb \
@@ -13,7 +13,7 @@ RUN groupadd -r fossildb \
1313
&& chmod 777 . \
1414
&& chown -R fossildb .
1515

16-
RUN GRPC_HEALTH_PROBE_VERSION=v0.2.0 && \
16+
RUN GRPC_HEALTH_PROBE_VERSION=v0.4.20 && \
1717
wget -qO/bin/grpc_health_probe https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-amd64 && \
1818
chmod +x /bin/grpc_health_probe
1919

build.sbt

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,24 @@ def getVersionFromGit: String = {
1414
}
1515
}
1616

17+
ThisBuild / scalacOptions ++= Seq(
18+
"-feature",
19+
"-deprecation"
20+
)
21+
1722
version := getVersionFromGit
1823

19-
scalaVersion := "2.12.15"
24+
scalaVersion := "2.13.12"
2025

2126
libraryDependencies ++= Seq(
22-
"ch.qos.logback" % "logback-classic" % "1.2.3",
23-
"com.typesafe.scala-logging" %% "scala-logging" % "3.7.2",
24-
"org.scalatest" % "scalatest_2.12" % "3.0.4" % "test",
27+
"ch.qos.logback" % "logback-classic" % "1.4.7",
28+
"com.typesafe.scala-logging" %% "scala-logging" % "3.9.5",
29+
"org.scalatest" % "scalatest_2.13" % "3.2.15" % "test",
2530
"io.grpc" % "grpc-netty" % scalapb.compiler.Version.grpcJavaVersion,
2631
"io.grpc" % "grpc-services" % scalapb.compiler.Version.grpcJavaVersion,
2732
"com.thesamet.scalapb" %% "scalapb-runtime-grpc" % scalapb.compiler.Version.scalapbVersion,
28-
"org.rocksdb" % "rocksdbjni" % "5.11.3",
29-
"com.github.scopt" %% "scopt" % "3.7.0"
33+
"org.rocksdb" % "rocksdbjni" % "7.10.2",
34+
"com.github.scopt" %% "scopt" % "4.1.0"
3035
)
3136

3237
Compile / managedSourceDirectories += target.value / "protobuf-generated"
@@ -39,6 +44,8 @@ Compile / mainClass := Some("com.scalableminds.fossildb.FossilDB")
3944

4045
assembly / assemblyMergeStrategy := {
4146
case x if x.endsWith("io.netty.versions.properties") => MergeStrategy.first
47+
// compare https://stackoverflow.com/questions/54834125/sbt-assembly-deduplicate-module-info-class
48+
case x if x.endsWith("module-info.class") => MergeStrategy.concat
4249
case x =>
4350
val oldStrategy = (assembly / assemblyMergeStrategy).value
4451
oldStrategy(x)
@@ -53,7 +60,10 @@ lazy val buildInfoSettings = Seq(
5360
override def toString: String = {
5461
try {
5562
val extracted = new java.io.InputStreamReader(java.lang.Runtime.getRuntime.exec("git rev-parse HEAD").getInputStream)
56-
new java.io.BufferedReader(extracted).readLine()
63+
val str = new java.io.BufferedReader(extracted).readLine()
64+
if (str == null) {
65+
"get git hash failed"
66+
} else str
5767
} catch {
5868
case t: Throwable => "get git hash failed"
5969
}

docker-compose.yaml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,6 @@ services:
3636
- USER_GID
3737
- TZ
3838
working_dir: /fossildb
39+
user: ${USER_UID:-1000}:${USER_GID:-1000}
3940
volumes:
4041
- ".:/fossildb"
41-
- "~/.m2:/home/sbt-user/.m2"
42-
- "~/.ivy2:/home/sbt-user/.ivy2"
43-
- "~/.sbt:/home/sbt-user/.sbt"

project/build.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
sbt.version = 1.6.2
1+
sbt.version = 1.9.6

project/scalapb.sbt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
addSbtPlugin("com.thesamet" % "sbt-protoc" % "0.99.18")
1+
addSbtPlugin("com.thesamet" % "sbt-protoc" % "1.0.2")
22

3-
libraryDependencies += "com.thesamet.scalapb" %% "compilerplugin" % "0.7.4"
3+
libraryDependencies += "com.thesamet.scalapb" %% "compilerplugin" % "0.11.13"

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ object FossilDB extends LazyLogging {
4848
opt[String]('b', "backupDir").valueName("<path>").action( (x, c) =>
4949
c.copy(backupDir = x) ).text("backup directory. Default: " + ConfigDefaults.backupDir)
5050

51-
opt[Seq[String]]('c', "columnFamilies").required.valueName("<cf1>,<cf2>...").action( (x, c) =>
51+
opt[Seq[String]]('c', "columnFamilies").required().valueName("<cf1>,<cf2>...").action( (x, c) =>
5252
c.copy(columnFamilies = x.toList) ).text("column families of the database (created if there is no db yet)")
5353

5454
opt[String]('r', "rocksOptionsFile").valueName("<filepath>").action( (x, c) =>

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import io.grpc.health.v1.HealthCheckResponse
66
import com.typesafe.scalalogging.LazyLogging
77
import io.grpc.Server
88
import io.grpc.netty.NettyServerBuilder
9-
import io.grpc.services.HealthStatusManager
9+
import io.grpc.protobuf.services.HealthStatusManager
1010

1111
import scala.concurrent.ExecutionContext
1212

@@ -17,7 +17,7 @@ class FossilDBServer(storeManager: StoreManager, port: Int, executionContext: Ex
1717

1818
def start(): Unit = {
1919
healthStatusManager = new HealthStatusManager()
20-
server = NettyServerBuilder.forPort(port).maxMessageSize(Int.MaxValue)
20+
server = NettyServerBuilder.forPort(port).maxInboundMessageSize(Int.MaxValue)
2121
.addService(FossilDBGrpc.bindService(new FossilDBGrpcImpl(storeManager), executionContext))
2222
.addService(healthStatusManager.getHealthService)
2323
.build.start

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ import org.rocksdb._
55

66
import java.nio.file.{Files, Path}
77
import java.util
8-
import scala.collection.JavaConverters._
98
import scala.collection.mutable
109
import scala.concurrent.Future
10+
import scala.jdk.CollectionConverters.{ListHasAsScala, BufferHasAsJava, SeqHasAsJava}
1111
import scala.language.postfixOps
1212

1313
case class BackupInfo(id: Int, timestamp: Long, size: Long)
@@ -56,7 +56,7 @@ class RocksDBManager(dataDir: Path, columnFamilies: List[String], optionsFilePat
5656
Files.createDirectories(backupDir)
5757

5858
RocksDB.loadLibrary()
59-
val backupEngine = BackupEngine.open(Env.getDefault, new BackupableDBOptions(backupDir.toString))
59+
val backupEngine = BackupEngine.open(Env.getDefault, new BackupEngineOptions(backupDir.toString))
6060
backupEngine.createNewBackup(db)
6161
backupEngine.purgeOldBackups(1)
6262
backupEngine.getBackupInfo.asScala.headOption.map(info => BackupInfo(info.backupId, info.timestamp, info.size))
@@ -66,7 +66,7 @@ class RocksDBManager(dataDir: Path, columnFamilies: List[String], optionsFilePat
6666
logger.info("Restoring from backup. RocksDB temporarily unavailable")
6767
close()
6868
RocksDB.loadLibrary()
69-
val backupEngine = BackupEngine.open(Env.getDefault, new BackupableDBOptions(backupDir.toString))
69+
val backupEngine = BackupEngine.open(Env.getDefault, new BackupEngineOptions(backupDir.toString))
7070
backupEngine.restoreDbFromLatestBackup(dataDir.toString, dataDir.toString, new RestoreOptions(true))
7171
logger.info("Restoring from backup complete. Reopening RocksDB")
7272
}
@@ -101,7 +101,7 @@ class RocksDBKeyIterator(it: RocksIterator, prefix: Option[String]) extends Iter
101101

102102
override def hasNext: Boolean = it.isValid && prefix.forall(it.key().startsWith(_))
103103

104-
override def next: String = {
104+
override def next(): String = {
105105
val key = new String(it.key().map(_.toChar))
106106
it.next()
107107
key
@@ -117,7 +117,7 @@ class RocksDBIterator(it: RocksIterator, prefix: Option[String]) extends Iterato
117117

118118
override def hasNext: Boolean = it.isValid && prefix.forall(it.key().startsWith(_))
119119

120-
override def next: KeyValuePair[Array[Byte]] = {
120+
override def next(): KeyValuePair[Array[Byte]] = {
121121
val value = KeyValuePair(new String(it.key().map(_.toChar)), it.value())
122122
it.next()
123123
value

0 commit comments

Comments
 (0)