Build Logs
lichess-org/lila-search • 3.8.0-RC6:2026-01-08
Errors
49
Warnings
295
Total Lines
812
1##################################
2Clonning https://github.com/lichess-org/lila-search.git into /build/repo using revision
3##################################
4----
5Preparing build for 3.8.0-RC6
6Scala binary version found: 3.8
7Implicitly using source version 3.8
8Scala binary version found: 3.8
9Implicitly using source version 3.8
10Would try to apply common scalacOption (best-effort, sbt/mill only):
11Append: ,REQUIRE:-source:3.8
12Remove: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
13----
14Starting build for 3.8.0-RC6
15Execute tests: true
16sbt project found:
17No prepare script found for project lichess-org/lila-search
18##################################
19Scala version: 3.8.0-RC6
20Targets: *%*
21Project projectConfig: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"25"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[]}
22##################################
23Using extra scalacOptions: ,REQUIRE:-source:3.8
24Filtering out scalacOptions: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
25[sbt_options] declare -a sbt_options=()
26[process_args] java_version = '25'
27[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_25/rt.jar'
28# Executing command line:
29java
30-Dfile.encoding=UTF-8
31-Dcommunitybuild.scala=3.8.0-RC6
32-Dcommunitybuild.project.dependencies.add=
33-Xmx7G
34-Xms4G
35-Xss8M
36-Dsbt.script=/root/.sdkman/candidates/sbt/current/bin/sbt
37-Dscala.ext.dirs=/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_25
38-jar
39/root/.sdkman/candidates/sbt/1.11.5/bin/sbt-launch.jar
40"setCrossScalaVersions 3.8.0-RC6"
41"++3.8.0-RC6 -v"
42"mapScalacOptions ",REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s" ",-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e""
43"set every credentials := Nil"
44"excludeLibraryDependency com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}"
45"removeScalacOptionsStartingWith -P:wartremover"
46
47moduleMappings
48"runBuild 3.8.0-RC6 """{"projects":{"exclude":[],"overrides":{}},"java":{"version":"25"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[]}""" *%*"
49
50[info] [launcher] getting org.scala-sbt sbt 1.11.7 (this may take some time)...
51WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
52WARNING: sun.misc.Unsafe::arrayBaseOffset has been called by net.openhft.hashing.UnsafeAccess (file:/root/.sbt/boot/scala-2.12.20/org.scala-sbt/sbt/1.11.7/zero-allocation-hashing-0.16.jar)
53WARNING: Please consider reporting this to the maintainers of class net.openhft.hashing.UnsafeAccess
54WARNING: sun.misc.Unsafe::arrayBaseOffset will be removed in a future release
55WARNING: A restricted method in java.lang.System has been called
56WARNING: java.lang.System::load has been called by com.sun.jna.Native in an unnamed module (file:/root/.sbt/boot/scala-2.12.20/org.scala-sbt/sbt/1.11.7/jna-5.12.0.jar)
57WARNING: Use --enable-native-access=ALL-UNNAMED to avoid a warning for callers in this module
58WARNING: Restricted methods will be blocked in a future release unless native access is enabled
59
60[info] welcome to sbt 1.11.7 (Eclipse Adoptium Java 25)
61[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
62[info] loading project definition from /build/repo/project
63[info] compiling 4 Scala sources to /build/repo/project/target/scala-2.12/sbt-1.0/classes ...
64[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.20. Compiling...
65[info] Compilation completed in 8.112s.
66[info] done compiling
67[info] loading settings for project root from build.sbt, version.sbt...
68[info] resolving key references (14745 settings) ...
69[info] set current project to root (in build file:/build/repo/)
70[warn] there's a key that's not used by any other settings/tasks:
71[warn]
72[warn] * ThisBuild / Docker / maintainer
73[warn] +- /build/repo/build.sbt:4
74[warn]
75[warn] note: a setting might still be used by a command; to exclude a key from this `lintUnused` check
76[warn] either append it to `Global / excludeLintKeys` or call .withRank(KeyRanks.Invisible) on the key
77Execute setCrossScalaVersions: 3.8.0-RC6
78OpenCB::Changing crossVersion 3.7.4 -> 3.8.0-RC6 in e2e/crossScalaVersions
79OpenCB::Changing crossVersion 3.7.4 -> 3.8.0-RC6 in core/crossScalaVersions
80OpenCB::Changing crossVersion 3.7.4 -> 3.8.0-RC6 in api/crossScalaVersions
81OpenCB::Changing crossVersion 3.7.4 -> 3.8.0-RC6 in ingestor-app/crossScalaVersions
82OpenCB::Changing crossVersion 3.7.4 -> 3.8.0-RC6 in app/crossScalaVersions
83OpenCB::Changing crossVersion 3.7.4 -> 3.8.0-RC6 in client/crossScalaVersions
84OpenCB::Changing crossVersion 3.7.4 -> 3.8.0-RC6 in ingestor-core/crossScalaVersions
85OpenCB::Changing crossVersion 3.7.4 -> 3.8.0-RC6 in lila-mongo/crossScalaVersions
86OpenCB::Changing crossVersion 3.7.4 -> 3.8.0-RC6 in elastic/crossScalaVersions
87OpenCB::Changing crossVersion 3.7.4 -> 3.8.0-RC6 in lila-game-export/crossScalaVersions
88OpenCB::Changing crossVersion 3.7.4 -> 3.8.0-RC6 in ingestor-cli/crossScalaVersions
89OpenCB::Changing crossVersion 3.7.4 -> 3.8.0-RC6 in root/crossScalaVersions
90[info] set current project to root (in build file:/build/repo/)
91[info] Setting Scala version to 3.8.0-RC6 on 12 projects.
92[info] Switching Scala version on:
93[info] ingestor-core (3.8.0-RC6)
94[info] * root (3.8.0-RC6)
95[info] ingestor-app (3.8.0-RC6)
96[info] elastic (3.8.0-RC6)
97[info] ingestor-cli (3.8.0-RC6)
98[info] lila-mongo (3.8.0-RC6)
99[info] lila-game-export (3.8.0-RC6)
100[info] client (3.8.0-RC6)
101[info] app (3.8.0-RC6)
102[info] api (3.8.0-RC6)
103[info] core (3.8.0-RC6)
104[info] e2e (3.8.0-RC6)
105[info] Excluding projects:
106[info] Reapplying settings...
107[info] set current project to root (in build file:/build/repo/)
108Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
109[info] Reapplying settings...
110[info] set current project to root (in build file:/build/repo/)
111[info] Defining Global / credentials, api / credentials and 10 others.
112[info] The new values will be used by Compile / scalafmtOnly, IntegrationTest / scalafmtOnly and 94 others.
113[info] Run `last` for details.
114[info] Reapplying settings...
115[info] set current project to root (in build file:/build/repo/)
116Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
117[info] Reapplying settings...
118OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
119
120 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
121 Did you mean app / allExcludeDependencies ?
122 , retry without global scopes
123[info] Reapplying settings...
124[info] set current project to root (in build file:/build/repo/)
125Execute removeScalacOptionsStartingWith: -P:wartremover
126[info] Reapplying settings...
127[info] set current project to root (in build file:/build/repo/)
128[success] Total time: 0 s, completed Jan 8, 2026, 2:29:07 AM
129Build config: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"25"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[]}
130Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),Full,List()))
131Starting build...
132Projects: Set(ingestor-core, root, ingestor-app, elastic, ingestor-cli, lila-mongo, lila-game-export, client, app, api, core, e2e)
133Starting build for ProjectRef(file:/build/repo/,client) (client)... [0/12]
134OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
135OpenCB::Filter out '-deprecation', matches setting pattern '^-?-deprecation'
136OpenCB::Filter out '-feature', matches setting pattern '^-?-feature'
137OpenCB::Filter out '-Xfatal-warnings', matches setting pattern '^-?-Xfatal-warnings'
138Compile scalacOptions: -encoding, utf8, -unchecked, -language:experimental.macros, -language:higherKinds, -language:implicitConversions, -Xkind-projector, -Wvalue-discard, -Wnonunit-statement, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -release, 21, -indent, -rewrite, -explain, -Wall, -Xsemanticdb, -semanticdb-target, /build/repo/modules/client/target/scala-3.8.0-RC6/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
139[info] compiling 16 Scala sources to /build/repo/modules/core/target/scala-3.8.0-RC6/classes ...
140[info] [patched file /build/repo/modules/core/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/core/IdFormat.scala]
141[info] [patched file /build/repo/modules/core/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/core/Strings.scala]
142[info] [patched file /build/repo/modules/core/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/core/PlayerIds.scala]
143[info] [patched file /build/repo/modules/core/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/core/SizeFormat.scala]
144[info] [patched file /build/repo/modules/core/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/core/FromFormat.scala]
145[info] [patched file /build/repo/modules/core/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/core/Ids.scala]
146[info] [patched file /build/repo/modules/core/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/core/IndexString.scala]
147[info] [patched file /build/repo/modules/core/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/core/DateTimeFormat.scala]
148[info] [patched file /build/repo/modules/core/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/core/DateTime.scala]
149[info] [patched file /build/repo/modules/core/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/core/SizeInt.scala]
150[info] [patched file /build/repo/modules/core/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/core/FromInt.scala]
151[info] [patched file /build/repo/modules/core/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/core/IndexFormat.scala]
152[info] [patched file /build/repo/modules/core/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/core/IdString.scala]
153[info] done compiling
154Jan 08, 2026 2:29:18 AM software.amazon.smithy.openapi.fromsmithy.mappers.RemoveUnusedComponents removalRound
155INFO: Removing unused OpenAPI components: [#/components/schemas/HealthCheckOutput]
156Jan 08, 2026 2:29:18 AM software.amazon.smithy.openapi.fromsmithy.mappers.RemoveUnusedComponents removalRound
157INFO: Removing unused OpenAPI components: [#/components/schemas/CountInput, #/components/schemas/SearchOutput, #/components/schemas/InternalServerError, #/components/schemas/SearchInput, #/components/schemas/CountOutput]
158[info] compiling 19 Scala sources to /build/repo/modules/api/target/scala-3.8.0-RC6/classes ...
159[info] [patched file /build/repo/modules/api/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/spec/HealthService.scala]
160[info] [patched file /build/repo/modules/api/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/spec/Query.scala]
161[info] [patched file /build/repo/modules/api/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/spec/SortBlogsBy.scala]
162[info] [patched file /build/repo/modules/api/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/spec/SearchOutput.scala]
163[info] [patched file /build/repo/modules/api/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/spec/HealthCheckOutput.scala]
164[info] [patched file /build/repo/modules/api/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/spec/GameSorting.scala]
165[info] [patched file /build/repo/modules/api/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/spec/StudySortField.scala]
166[info] [patched file /build/repo/modules/api/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/spec/Order.scala]
167[info] [patched file /build/repo/modules/api/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/spec/DateRange.scala]
168[info] [patched file /build/repo/modules/api/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/spec/CountInput.scala]
169[info] [patched file /build/repo/modules/api/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/spec/InternalServerError.scala]
170[info] [patched file /build/repo/modules/api/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/spec/Perfs.scala]
171[info] [patched file /build/repo/modules/api/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/spec/StudySorting.scala]
172[info] [patched file /build/repo/modules/api/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/spec/ElasticStatus.scala]
173[info] [patched file /build/repo/modules/api/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/spec/IntRange.scala]
174[info] [patched file /build/repo/modules/api/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/spec/CountOutput.scala]
175[info] [patched file /build/repo/modules/api/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/spec/SearchService.scala]
176[info] [patched file /build/repo/modules/api/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/spec/SearchInput.scala]
177[info] done compiling
178[info] compiling 3 Scala sources to /build/repo/modules/client/target/scala-3.8.0-RC6/classes ...
179[info] done compiling
180[info] compiling 16 Scala sources to /build/repo/modules/core/target/scala-3.8.0-RC6/classes ...
181[info] done compiling
182Jan 08, 2026 2:29:28 AM software.amazon.smithy.openapi.fromsmithy.mappers.RemoveUnusedComponents removalRound
183INFO: Removing unused OpenAPI components: [#/components/schemas/HealthCheckOutput]
184Jan 08, 2026 2:29:28 AM software.amazon.smithy.openapi.fromsmithy.mappers.RemoveUnusedComponents removalRound
185INFO: Removing unused OpenAPI components: [#/components/schemas/CountInput, #/components/schemas/SearchOutput, #/components/schemas/InternalServerError, #/components/schemas/SearchInput, #/components/schemas/CountOutput]
186Starting build for ProjectRef(file:/build/repo/,lila-mongo) (lila-mongo)... [1/12]
187Compile scalacOptions: -encoding, utf8, -unchecked, -language:experimental.macros, -language:higherKinds, -language:implicitConversions, -Xkind-projector, -Wvalue-discard, -Wnonunit-statement, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -release, 21, -indent, -rewrite, -explain, -Wall, -Xsemanticdb, -semanticdb-target, /build/repo/modules/lila-mongo/target/scala-3.8.0-RC6/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
188[info] compiling 11 Scala sources to /build/repo/modules/lila-mongo/target/scala-3.8.0-RC6/classes ...
189[warn] -- [E222] Syntax Warning: /build/repo/modules/lila-mongo/src/main/scala/mongo.game.scala:2:8
190[warn] 2 |package ingestor
191[warn] |^
192[warn] |The package name `mongo.game$package` will be encoded on the classpath, and can lead to undefined behaviour.
193[warn] 3 |import cats.effect.*
194[warn] 4 |import cats.syntax.all.*
195[warn] 5 |import chess.Clock.Config
196[warn] 6 |import chess.Speed
197[warn] 7 |import chess.variant.*
198[warn] 8 |import com.mongodb.client.model.changestream.FullDocument
199[warn] 9 |import com.mongodb.client.model.changestream.OperationType.*
200[warn] 10 |import io.circe.*
201[warn] 11 |import mongo4cats.circe.*
202[warn] 12 |import mongo4cats.collection.MongoCollection
203[warn] 13 |import mongo4cats.database.MongoDatabase
204[warn] 14 |import mongo4cats.models.collection.ChangeStreamDocument
205[warn] 15 |import mongo4cats.operations.{ Aggregate, Filter, Projection }
206[warn] 16 |import org.typelevel.log4cats.syntax.*
207[warn] 17 |import org.typelevel.log4cats.{ Logger, LoggerFactory }
208[warn] 18 |import java.time.Instant
209[warn] 19 |import scala.concurrent.duration.*
210[warn] 20 |import Repo.{ *, given }
211[warn] 21 |object GameRepo:
212[warn] 22 | private val interestedOperations = List(UPDATE, DELETE).map(_.getValue)
213[warn] 23 | private val eventFilter = Filter.in("operationType", interestedOperations)
214[warn] 24 | private val interestedEventFields =
215[warn] 25 | List(
216[warn] 26 | "operationType",
217[warn] 27 | "clusterTime",
218[warn] 28 | "documentKey._id",
219[warn] 29 | "fullDocument"
220[warn] 30 | ) // TODO only include interestedFields
221[warn] 31 | private val eventProjection = Projection.include(interestedEventFields)
222[warn] 32 | // https://github.com/lichess-org/lila/blob/65e6dd88e99cfa0068bc790a4518a6edb3513f54/modules/gameSearch/src/main/GameSearchApi.scala#L52
223[warn] 33 | val gameFilter: Filter =
224[warn] 34 | // Filter games that finished
225[warn] 35 | // https://github.com/lichess-org/scalachess/blob/18edf46a50445048fdc2ee5a83752e5b3884f490/core/src/main/scala/Status.scala#L18-L27
226[warn] 36 | val statusFilter = Filter.gte("s", 30)
227[warn] 37 | val noImportFilter = Filter.ne("so", 7)
228[warn] 38 | // us fields is the list of player ids, if it's missing then it's
229[warn] 39 | // an all anonymous (or anonymous vs stockfish) game
230[warn] 40 | val noAllAnonFilter = Filter.exists("us")
231[warn] 41 | statusFilter.and(noImportFilter).and(noAllAnonFilter)
232[warn] 42 | // https://github.com/lichess-org/lila/blob/65e6dd88e99cfa0068bc790a4518a6edb3513f54/modules/gameSearch/src/main/GameSearchApi.scala#L52
233[warn] 43 | val changeFilter: Filter =
234[warn] 44 | // Filter games that finished
235[warn] 45 | // https://github.com/lichess-org/scalachess/blob/18edf46a50445048fdc2ee5a83752e5b3884f490/core/src/main/scala/Status.scala#L18-L27
236[warn] 46 | val statusFilter = Filter.gte("fullDocument.s", 30)
237[warn] 47 | val noImportFilter = Filter.ne("fullDocument.so", 7)
238[warn] 48 | // us fields is the list of player ids, if it's missing then it's
239[warn] 49 | // an all anonymous (or anonymous vs stockfish) game
240[warn] 50 | val noAllAnonFilter = Filter.exists("fullDocument.us")
241[warn] 51 | statusFilter.and(noImportFilter).and(noAllAnonFilter)
242[warn] 52 | private val aggregate =
243[warn] 53 | Aggregate.matchBy(eventFilter.and(changeFilter)).combinedWith(Aggregate.project(eventProjection))
244[warn] 54 | def apply(mongo: MongoDatabase[IO], config: IngestorConfig.Game)(using
245[warn] 55 | LoggerFactory[IO]
246[warn] 56 | ): IO[Repo[DbGame]] =
247[warn] 57 | given Logger[IO] = LoggerFactory[IO].getLogger
248[warn] 58 | mongo.getCollectionWithCodec[DbGame]("game5").map(apply(config))
249[warn] 59 | def apply(config: IngestorConfig.Game)(games: MongoCollection[IO, DbGame])(using
250[warn] 60 | Logger[IO]
251[warn] 61 | ): Repo[DbGame] = new:
252[warn] 62 | def watch(since: Option[Instant]): fs2.Stream[IO, Result[DbGame]] =
253[warn] 63 | changes(since)
254[warn] 64 | .map: events =>
255[warn] 65 | val lastEventTimestamp = events.lastOption.flatMap(_.clusterTime).flatMap(_.asInstant)
256[warn] 66 | val (toDelete, toIndex) = events.partition(_.operationType == DELETE)
257[warn] 67 | Result(
258[warn] 68 | toIndex.flatMap(_.fullDocument),
259[warn] 69 | toDelete.flatMap(_.docId.map(Id.apply)),
260[warn] 70 | lastEventTimestamp
261[warn] 71 | )
262[warn] 72 | def fetchAll(since: Instant, until: Instant): fs2.Stream[IO, Result[DbGame]] =
263[warn] 73 | val filter = range(F.createdAt)(since, until.some)
264[warn] 74 | fs2.Stream.eval(info"Fetching games from $since to $until") *>
265[warn] 75 | games
266[warn] 76 | .find(filter.and(gameFilter))
267[warn] 77 | // .hint("ca_-1")
268[warn] 78 | .boundedStream(config.batchSize)
269[warn] 79 | .chunkN(config.batchSize)
270[warn] 80 | .map(_.toList)
271[warn] 81 | .metered(1.second) // to avoid overloading the elasticsearch
272[warn] 82 | .map(ds => Result(ds, Nil, None))
273[warn] 83 | private def changes(since: Option[Instant]): fs2.Stream[IO, List[ChangeStreamDocument[DbGame]]] =
274[warn] 84 | val builder = games.watch(aggregate)
275[warn] 85 | since
276[warn] 86 | .fold(builder)(x => builder.startAtOperationTime(x.asBsonTimestamp))
277[warn] 87 | .fullDocument(FullDocument.UPDATE_LOOKUP) // this is required for update event
278[warn] 88 | .batchSize(config.batchSize)
279[warn] 89 | .boundedStream(config.batchSize)
280[warn] 90 | .groupWithin(config.batchSize, config.timeWindows.second)
281[warn] 91 | .evalTap(
282[warn] 92 | _.traverse_(x =>
283[warn] 93 | info"Received $x without p0 or p1 fields".whenA(x.fullDocument.exists(_.shouldDebug))
284[warn] 94 | )
285[warn] 95 | )
286[warn] 96 | .map(_.toList.distincByDocId)
287[warn] 97 | object F:
288[warn] 98 | val createdAt = "ca"
289[warn] 99 | val updatedAt = "ua"
290[warn] 100 |type PlayerId = String
291[warn] 101 |case class DbGame(
292[warn] 102 | id: String, // _id
293[warn] 103 | players: List[PlayerId], // us
294[warn] 104 | winnerId: Option[PlayerId], // wid
295[warn] 105 | createdAt: Instant, // ca
296[warn] 106 | movedAt: Instant, // ua
297[warn] 107 | ply: Int, // t
298[warn] 108 | analysed: Option[Boolean], // an
299[warn] 109 | whitePlayer: Option[DbPlayer], // p0
300[warn] 110 | blackPlayer: Option[DbPlayer], // p1
301[warn] 111 | playerIds: String, // is
302[warn] 112 | binaryPieces: Option[Array[Byte]], // ps
303[warn] 113 | huffmanPgn: Option[Array[Byte]], // hp
304[warn] 114 | status: Int, // s
305[warn] 115 | encodedClock: Option[Array[Byte]], // c
306[warn] 116 | moveTimes: Option[Array[Byte]], // mt
307[warn] 117 | encodedWhiteClock: Option[Array[Byte]], // cw
308[warn] 118 | encodedBlackClock: Option[Array[Byte]], // cb
309[warn] 119 | rated: Option[Boolean], // ra
310[warn] 120 | variant: Option[Int], // v
311[warn] 121 | source: Option[Int], // so
312[warn] 122 | winnerColor: Option[Boolean] // w
313[warn] 123 |):
314[warn] 124 | def clockConfig: Option[Config] = encodedClock.flatMap(ClockDecoder.read)
315[warn] 125 | def clockInit: Option[Int] = clockConfig.map(_.limitSeconds.value)
316[warn] 126 | def clockInc: Option[Int] = clockConfig.map(_.incrementSeconds.value)
317[warn] 127 | def whiteId: Option[PlayerId] = players.headOption
318[warn] 128 | def blackId: Option[PlayerId] = players.lift(1)
319[warn] 129 | def variantOrDefault: Variant = Variant.idOrDefault(variant.map(Variant.Id.apply))
320[warn] 130 | def speed: Speed = Speed(clockConfig)
321[warn] 131 | def loser: Option[PlayerId] = players.find(_.some != winnerId)
322[warn] 132 | def aiLevel: Option[Int] = whitePlayer.flatMap(_.aiLevel).orElse(blackPlayer.flatMap(_.aiLevel))
323[warn] 133 | def shouldDebug =
324[warn] 134 | whitePlayer.isEmpty || blackPlayer.isEmpty
325[warn] 135 |object DbGame:
326[warn] 136 | // format: off
327[warn] 137 | given Decoder[DbGame] = Decoder.forProduct21(
328[warn] 138 | "_id", "us", "wid", "ca", "ua", "t", "an", "p0", "p1", "is", "ps",
329[warn] 139 | "hp", "s", "c", "mt", "cw", "cb", "ra", "v", "so", "w")(DbGame.apply)
330[warn] 140 | // format: on
331[warn] 141 | // We don't write to the database so We don't need to implement this
332[warn] 142 | given Encoder[DbGame] = new Encoder[DbGame]:
333[warn] 143 | def apply(a: DbGame): Json = ???
334[warn] 144 |case class DbPlayer(
335[warn] 145 | rating: Option[Int],
336[warn] 146 | ratingDiff: Option[Int],
337[warn] 147 | berserk: Option[Boolean],
338[warn] 148 | aiLevel: Option[Int],
339[warn] 149 | provisional: Option[Boolean],
340[warn] 150 | name: Option[String]
341[warn] 151 |)
342[warn] 152 |object DbPlayer:
343[warn] 153 | given Decoder[DbPlayer] = Decoder.forProduct6("e", "d", "be", "ai", "p", "na")(DbPlayer.apply)
344[warn] 154 | given Encoder[DbPlayer] = Encoder.forProduct6("e", "d", "be", "ai", "p", "na")(p =>
345[warn] 155 | (p.rating, p.ratingDiff, p.berserk, p.aiLevel, p.provisional, p.name)
346[warn] 156 | )
347[warn] 157 |object ClockDecoder:
348[warn] 158 | import chess.*
349[warn] 159 | private def readClockLimit(i: Int) = Clock.LimitSeconds(if i < 181 then i * 60 else (i - 180) * 15)
350[warn] 160 | private inline def toInt(inline b: Byte): Int = b & 0xff
351[warn] 161 | def read(ba: Array[Byte]): Option[Clock.Config] =
352[warn] 162 | ba.take(2).map(toInt) match
353[warn] 163 | case Array(b1, b2) => Clock.Config(readClockLimit(b1), Clock.IncrementSeconds(b2)).some
354[warn] 164 | case _ => None
355[warn] |---------------------------------------------------------------------------
356[warn] | Explanation (enabled by `-explain`)
357[warn] |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
358[warn] | Tools may not handle directories whose names differ from their corresponding package names.
359[warn] | For example, `p-q` is encoded as `p$minusq` when written to the file system.
360[warn] |
361[warn] | Package objects derive their names from the file names, so files such as `myfile.test.scala`
362[warn] | or `myfile-test.scala` can produce encoded names for the generated package objects.
363[warn] |
364[warn] | In this case, the name `mongo.game$package` is encoded as `mongo$u002Egame$package`.
365[warn] ---------------------------------------------------------------------------
366[warn] one warning found
367[info] done compiling
368Starting build for ProjectRef(file:/build/repo/,core) (core)... [2/12]
369Compile scalacOptions: -encoding, utf8, -unchecked, -language:experimental.macros, -language:higherKinds, -language:implicitConversions, -Xkind-projector, -Wvalue-discard, -Wnonunit-statement, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -release, 21, -indent, -rewrite, -explain, -Wall, -Xsemanticdb, -semanticdb-target, /build/repo/modules/core/target/scala-3.8.0-RC6/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
370Starting build for ProjectRef(file:/build/repo/,api) (api)... [3/12]
371Compile scalacOptions: -encoding, utf8, -unchecked, -language:experimental.macros, -language:higherKinds, -language:implicitConversions, -Xkind-projector, -Wvalue-discard, -Wnonunit-statement, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -release, 21, -indent, -rewrite, -explain, -Wall, -Xsemanticdb, -semanticdb-target, /build/repo/modules/api/target/scala-3.8.0-RC6/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
372Starting build for ProjectRef(file:/build/repo/,lila-game-export) (lila-game-export)... [4/12]
373Compile scalacOptions: -encoding, utf8, -unchecked, -language:experimental.macros, -language:higherKinds, -language:implicitConversions, -Xkind-projector, -Wvalue-discard, -Wnonunit-statement, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -release, 21, -indent, -rewrite, -explain, -Wall, -Xsemanticdb, -semanticdb-target, /build/repo/modules/lila-game-export/target/scala-3.8.0-RC6/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
374[info] compiling 3 Scala sources to /build/repo/modules/lila-game-export/target/scala-3.8.0-RC6/classes ...
375[info] done compiling
376[info] compiling 1 Scala source to /build/repo/modules/lila-game-export/target/scala-3.8.0-RC6/test-classes ...
377[info] done compiling
378[info] lila.search.game.csv.CliTest
379[info] + export command with all required options 70ms
380[info] + export command with custom database 4ms
381[info] + export command with custom batch settings 3ms
382[info] + export command with watch flag 3ms
383Starting build for ProjectRef(file:/build/repo/,root) (root)... [5/12]
384Compile scalacOptions: -encoding, utf8, -unchecked, -language:experimental.macros, -language:higherKinds, -language:implicitConversions, -Xkind-projector, -Wvalue-discard, -Wnonunit-statement, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -Xsemanticdb, -semanticdb-target, /build/repo/target/scala-3.8.0-RC6/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
385Starting build for ProjectRef(file:/build/repo/,e2e) (e2e)... [6/12]
386Compile scalacOptions: -encoding, utf8, -unchecked, -language:experimental.macros, -language:higherKinds, -language:implicitConversions, -Xkind-projector, -Wvalue-discard, -Wnonunit-statement, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -Xsemanticdb, -semanticdb-target, /build/repo/modules/e2e/target/scala-3.8.0-RC6/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
387[info] compiling 27 Scala sources to /build/repo/modules/elastic/target/scala-3.8.0-RC6/classes ...
388[info] [patched file /build/repo/modules/elastic/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/es/Chapter.scala]
389[info] [patched file /build/repo/modules/elastic/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/es/Study2Source.scala]
390[info] [patched file /build/repo/modules/elastic/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/es/KeywordField.scala]
391[info] [patched file /build/repo/modules/elastic/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/es/Chapters.scala]
392[info] [patched file /build/repo/modules/elastic/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/es/NestedField.scala]
393[info] [patched file /build/repo/modules/elastic/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/es/ChapterTags.scala]
394[info] [patched file /build/repo/modules/elastic/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/es/ShortField.scala]
395[info] [patched file /build/repo/modules/elastic/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/es/GameSource.scala]
396[info] [patched file /build/repo/modules/elastic/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/es/IntField.scala]
397[info] [patched file /build/repo/modules/elastic/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/es/ForumSource.scala]
398[info] [patched file /build/repo/modules/elastic/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/es/UblogSource.scala]
399[info] [patched file /build/repo/modules/elastic/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/es/TeamSource.scala]
400[info] [patched file /build/repo/modules/elastic/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/es/KeywordSubfield.scala]
401[info] [patched file /build/repo/modules/elastic/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/es/TextField.scala]
402[info] [patched file /build/repo/modules/elastic/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/es/DateField.scala]
403[info] [patched file /build/repo/modules/elastic/target/scala-3.8.0-RC6/src_managed/main/smithy4s/lila/search/es/BooleanField.scala]
404[info] done compiling
405[info] compiling 11 Scala sources to /build/repo/modules/app/target/scala-3.8.0-RC6/classes ...
406[info] compiling 7 Scala sources to /build/repo/modules/ingestor-core/target/scala-3.8.0-RC6/classes ...
407[warn] -- [E222] Syntax Warning: /build/repo/modules/app/src/main/scala/http.middleware.scala:2:8
408[warn] 2 |package app
409[warn] |^
410[warn] |The package name `http.middleware$package` will be encoded on the classpath, and can lead to undefined behaviour.
411[warn] 3 |import cats.effect.IO
412[warn] 4 |import org.http4s.*
413[warn] 5 |import org.http4s.otel4s.middleware.metrics.OtelMetrics
414[warn] 6 |import org.http4s.server.middleware.*
415[warn] 7 |import org.typelevel.log4cats.LoggerFactory
416[warn] 8 |import org.typelevel.otel4s.metrics.MeterProvider
417[warn] 9 |import scala.concurrent.duration.*
418[warn] 10 |type Middleware = HttpRoutes[IO] => HttpRoutes[IO]
419[warn] 11 |def MkMiddleware(config: HttpServerConfig)(using LoggerFactory[IO], MeterProvider[IO]): IO[Middleware] =
420[warn] 12 | def verboseLogger =
421[warn] 13 | RequestLogger.httpRoutes[IO](true, true).andThen(ResponseLogger.httpRoutes[IO, Request[IO]](true, true))
422[warn] 14 | def logger =
423[warn] 15 | if config.apiLogger then verboseLogger
424[warn] 16 | else ApiErrorLogger.instance(using LoggerFactory[IO].getLogger)
425[warn] 17 | OtelMetrics
426[warn] 18 | .serverMetricsOps[IO]()
427[warn] 19 | .map(org.http4s.server.middleware.Metrics[IO](_, None))
428[warn] 20 | .map: metrics =>
429[warn] 21 | logger.andThen(AutoSlash(_)).andThen(Timeout(60.seconds)).andThen(metrics)
430[warn] |----------------------------------------------------------------------------
431[warn] | Explanation (enabled by `-explain`)
432[warn] |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
433[warn] | Tools may not handle directories whose names differ from their corresponding package names.
434[warn] | For example, `p-q` is encoded as `p$minusq` when written to the file system.
435[warn] |
436[warn] | Package objects derive their names from the file names, so files such as `myfile.test.scala`
437[warn] | or `myfile-test.scala` can produce encoded names for the generated package objects.
438[warn] |
439[warn] | In this case, the name `http.middleware$package` is encoded as `http$u002Emiddleware$package`.
440[warn] ----------------------------------------------------------------------------
441[warn] -- [E222] Syntax Warning: /build/repo/modules/app/src/main/scala/http.routes.prometheus.scala:2:8
442[warn] 2 |package app
443[warn] |^
444[warn] |The package name `http.routes.prometheus$package` will be encoded on the classpath, and can lead to undefined behaviour.
445[warn] 3 |import cats.effect.IO
446[warn] 4 |import org.http4s.HttpRoutes
447[warn] 5 |import org.http4s.server.Router
448[warn] 6 |import org.typelevel.otel4s.sdk.exporter.prometheus.*
449[warn] 7 |import org.typelevel.otel4s.sdk.metrics.exporter.MetricExporter
450[warn] 8 |def MkPrometheusRoutes(using exporter: MetricExporter.Pull[IO]): HttpRoutes[IO] =
451[warn] 9 | val writerConfig = PrometheusWriter.Config.default
452[warn] 10 | val prometheusRoutes = PrometheusHttpRoutes.routes[IO](exporter, writerConfig)
453[warn] 11 | Router("/metrics" -> prometheusRoutes)
454[warn] |----------------------------------------------------------------------------
455[warn] | Explanation (enabled by `-explain`)
456[warn] |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
457[warn] | Tools may not handle directories whose names differ from their corresponding package names.
458[warn] | For example, `p-q` is encoded as `p$minusq` when written to the file system.
459[warn] |
460[warn] | Package objects derive their names from the file names, so files such as `myfile.test.scala`
461[warn] | or `myfile-test.scala` can produce encoded names for the generated package objects.
462[warn] |
463[warn] | In this case, the name `http.routes.prometheus$package` is encoded as `http$u002Eroutes$u002Eprometheus$package`.
464[warn] ----------------------------------------------------------------------------
465[warn] -- [E222] Syntax Warning: /build/repo/modules/app/src/main/scala/http.routes.scala:2:8
466[warn] 2 |package app
467[warn] |^
468[warn] |The package name `http.routes$package` will be encoded on the classpath, and can lead to undefined behaviour.
469[warn] 3 |import cats.data.NonEmptyList
470[warn] 4 |import cats.effect.{ IO, Resource }
471[warn] 5 |import cats.syntax.all.*
472[warn] 6 |import lila.search.spec.*
473[warn] 7 |import org.http4s.HttpRoutes
474[warn] 8 |import org.typelevel.log4cats.LoggerFactory
475[warn] 9 |import org.typelevel.otel4s.metrics.MeterProvider
476[warn] 10 |import smithy4s.http4s.SimpleRestJsonBuilder
477[warn] 11 |def Routes(
478[warn] 12 | resources: AppResources,
479[warn] 13 | config: HttpServerConfig
480[warn] 14 |)(using LoggerFactory[IO], MeterProvider[IO]): Resource[IO, HttpRoutes[IO]] =
481[warn] 15 | val healthServiceImpl = HealthServiceImpl(resources.esClient)
482[warn] 16 | val searchServiceImpl = SearchServiceImpl(resources.esClient)
483[warn] 17 | val search: Resource[IO, HttpRoutes[IO]] =
484[warn] 18 | SimpleRestJsonBuilder.routes(searchServiceImpl).resource
485[warn] 19 | val health: Resource[IO, HttpRoutes[IO]] =
486[warn] 20 | SimpleRestJsonBuilder.routes(healthServiceImpl).resource
487[warn] 21 | def docs = smithy4s.http4s.swagger.docs[IO](SearchService, HealthService)
488[warn] 22 | val apiRoutes =
489[warn] 23 | NonEmptyList
490[warn] 24 | .of(search, health)
491[warn] 25 | .sequence
492[warn] 26 | .map(_.reduceK)
493[warn] 27 | val allRoutes =
494[warn] 28 | if config.enableDocs then apiRoutes.map(_ <+> docs)
495[warn] 29 | else apiRoutes
496[warn] 30 | allRoutes.evalMap(routes => MkMiddleware(config).map(md => md.apply(routes)))
497[warn] |----------------------------------------------------------------------------
498[warn] | Explanation (enabled by `-explain`)
499[warn] |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
500[warn] | Tools may not handle directories whose names differ from their corresponding package names.
501[warn] | For example, `p-q` is encoded as `p$minusq` when written to the file system.
502[warn] |
503[warn] | Package objects derive their names from the file names, so files such as `myfile.test.scala`
504[warn] | or `myfile-test.scala` can produce encoded names for the generated package objects.
505[warn] |
506[warn] | In this case, the name `http.routes$package` is encoded as `http$u002Eroutes$package`.
507[warn] ----------------------------------------------------------------------------
508[info] done compiling
509[info] [patched file /build/repo/modules/app/target/scala-3.8.0-RC6/src_managed/main/sbt-buildinfo/BuildInfo.scala]
510[warn] three warnings found
511[info] done compiling
512[info] compiling 27 Scala sources to /build/repo/modules/elastic/target/scala-3.8.0-RC6/classes ...
513[info] done compiling
514[info] compiling 2 Scala sources to /build/repo/modules/app/target/scala-3.8.0-RC6/classes ...
515[info] compiling 1 Scala source to /build/repo/modules/ingestor-core/target/scala-3.8.0-RC6/classes ...
516[info] done compiling
517[info] done compiling
518[info] compiling 4 Scala sources to /build/repo/modules/e2e/target/scala-3.8.0-RC6/test-classes ...
519[info] done compiling
520SLF4J(W): A number (5) of logging calls during the initialization phase have been intercepted and are
521SLF4J(W): now being replayed. These are subject to the filtering rules of the underlying logging system.
522SLF4J(W): See also https://www.slf4j.org/codes.html#replay
5232026-01-08 02:30:13,563 [io-compute-3] INFO o.t.i.PullPolicy - Image pull policy will be performed by: DefaultPullPolicy()
5242026-01-08 02:30:13,565 [io-compute-3] INFO o.t.u.ImageNameSubstitutor - Image name substitution will be performed by: DefaultImageNameSubstitutor (composite of 'ConfigurationFileImageNameSubstitutor' and 'PrefixingImageNameSubstitutor')
5252026-01-08 02:30:13,565 [io-compute-3] INFO o.t.DockerClientFactory - Testcontainers version: 2.0.3
5262026-01-08 02:30:14,137 [io-compute-2] INFO o.t.d.DockerClientProviderStrategy - Found Docker environment with local Unix socket (unix:///var/run/docker.sock)
5272026-01-08 02:30:14,157 [io-compute-2] INFO o.t.DockerClientFactory - Docker host IP address is 172.17.0.1
5282026-01-08 02:30:14,181 [io-compute-2] INFO o.t.DockerClientFactory - Connected to docker:
529 Server Version: 28.0.4
530 API Version: 1.48
531 Operating System: Ubuntu 22.04.5 LTS
532 Total Memory: 15994 MB
5332026-01-08 02:30:14,221 [io-compute-2] INFO t.t.13.0 - Pulling docker image: testcontainers/ryuk:0.13.0. Please be patient; this may take some time but only needs to be done once.
5342026-01-08 02:30:14,222 [io-compute-0] INFO o.h.e.s.EmberServerBuilderCompanionPlatform - Ember-Server service bound to address: [::]:9999
5352026-01-08 02:30:14,225 [io-compute-0] INFO lila.search.app.App - lila-search started at /[0:0:0:0:0:0:0:0]:9999
5362026-01-08 02:30:14,226 [io-compute-1] INFO lila.search.app.App - BuildInfo: version: 3.4.3-SNAPSHOT, gitHeadCommit: 1b1ef7a
5372026-01-08 02:30:14,229 [io-compute-2] INFO o.t.u.RegistryAuthLocator - Failure when attempting to lookup auth config. Please ignore if you don't have images in an authenticated registry. Details: (dockerImageName: testcontainers/ryuk:latest, configFile: /root/.docker/config.json, configEnv: DOCKER_AUTH_CONFIG). Falling back to docker-java default behaviour. Exception message: Status 404: No config supplied. Checked in order: /root/.docker/config.json (file not found), DOCKER_AUTH_CONFIG (not set)
5382026-01-08 02:30:14,673 [docker-java-stream--792291873] INFO t.t.13.0 - Starting to pull image
5392026-01-08 02:30:14,690 [docker-java-stream--792291873] INFO t.t.13.0 - Pulling image layers: 0 pending, 0 downloaded, 0 extracted, (0 bytes/0 bytes)
5402026-01-08 02:30:14,949 [docker-java-stream--792291873] INFO t.t.13.0 - Pulling image layers: 1 pending, 1 downloaded, 0 extracted, (211 KB/? MB)
5412026-01-08 02:30:14,962 [docker-java-stream--792291873] INFO t.t.13.0 - Pulling image layers: 1 pending, 1 downloaded, 1 extracted, (211 KB/? MB)
542[INFO] [01/08/2026 02:30:15.014] [io-compute-3] [CoordinatedShutdown(akka://default)] Running CoordinatedShutdown with reason [ActorSystemTerminateReason]
543[info] lila.search.test.CompatSuite
544[info] + search endpoint 281ms
545[info] + bad search study endpoint 29ms
546[info] + count endpoint 281ms
5472026-01-08 02:30:15,048 [docker-java-stream--792291873] INFO t.t.13.0 - Pulling image layers: 0 pending, 2 downloaded, 1 extracted, (281 KB/6 MB)
5482026-01-08 02:30:15,129 [docker-java-stream--792291873] INFO t.t.13.0 - Pulling image layers: 0 pending, 2 downloaded, 2 extracted, (6 MB/6 MB)
5492026-01-08 02:30:15,134 [io-compute-2] INFO t.t.13.0 - Image testcontainers/ryuk:0.13.0 pull took PT0.912034851S
5502026-01-08 02:30:15,161 [io-compute-2] INFO t.t.13.0 - Creating container for image: testcontainers/ryuk:0.13.0
5512026-01-08 02:30:15,229 [io-compute-2] INFO t.t.13.0 - Container testcontainers/ryuk:0.13.0 is starting: ab0eeecf382d6cfb6a1bbd442e8548487aa2d828a8a0e82910674ab06fc29cd4
5522026-01-08 02:30:15,615 [io-compute-2] INFO t.t.13.0 - Container testcontainers/ryuk:0.13.0 started in PT0.454663875S
5532026-01-08 02:30:15,619 [io-compute-2] INFO o.t.u.RyukResourceReaper - Ryuk started - will monitor and terminate Testcontainers containers on JVM exit
5542026-01-08 02:30:15,619 [io-compute-2] INFO o.t.DockerClientFactory - Checking the system...
5552026-01-08 02:30:15,620 [io-compute-2] INFO o.t.DockerClientFactory - ✔︎ Docker server version should be at least 1.6.0
5562026-01-08 02:30:15,623 [io-compute-2] INFO t.e.10.1 - Pulling docker image: elasticsearch:7.10.1. Please be patient; this may take some time but only needs to be done once.
5572026-01-08 02:30:16,127 [docker-java-stream-1089867659] INFO t.e.10.1 - Starting to pull image
5582026-01-08 02:30:16,128 [docker-java-stream-1089867659] INFO t.e.10.1 - Pulling image layers: 0 pending, 0 downloaded, 0 extracted, (0 bytes/0 bytes)
5592026-01-08 02:30:16,441 [docker-java-stream-1089867659] INFO t.e.10.1 - Pulling image layers: 8 pending, 1 downloaded, 0 extracted, (2 KB/? MB)
5602026-01-08 02:30:16,759 [docker-java-stream-1089867659] INFO t.e.10.1 - Pulling image layers: 7 pending, 2 downloaded, 0 extracted, (10 MB/? MB)
5612026-01-08 02:30:16,937 [docker-java-stream-1089867659] INFO t.e.10.1 - Pulling image layers: 6 pending, 3 downloaded, 0 extracted, (18 MB/? MB)
5622026-01-08 02:30:17,105 [docker-java-stream-1089867659] INFO t.e.10.1 - Pulling image layers: 5 pending, 4 downloaded, 0 extracted, (21 MB/? MB)
5632026-01-08 02:30:17,338 [docker-java-stream-1089867659] INFO t.e.10.1 - Pulling image layers: 4 pending, 5 downloaded, 0 extracted, (28 MB/? MB)
5642026-01-08 02:30:17,488 [docker-java-stream-1089867659] INFO t.e.10.1 - Pulling image layers: 3 pending, 6 downloaded, 0 extracted, (33 MB/? MB)
5652026-01-08 02:30:17,653 [docker-java-stream-1089867659] INFO t.e.10.1 - Pulling image layers: 2 pending, 7 downloaded, 0 extracted, (35 MB/? MB)
5662026-01-08 02:30:20,513 [docker-java-stream-1089867659] INFO t.e.10.1 - Pulling image layers: 1 pending, 8 downloaded, 0 extracted, (131 MB/? MB)
5672026-01-08 02:30:22,704 [docker-java-stream-1089867659] INFO t.e.10.1 - Pulling image layers: 1 pending, 8 downloaded, 1 extracted, (204 MB/? MB)
5682026-01-08 02:30:23,825 [docker-java-stream-1089867659] INFO t.e.10.1 - Pulling image layers: 1 pending, 8 downloaded, 2 extracted, (251 MB/? MB)
5692026-01-08 02:30:23,842 [docker-java-stream-1089867659] INFO t.e.10.1 - Pulling image layers: 1 pending, 8 downloaded, 3 extracted, (251 MB/? MB)
5702026-01-08 02:30:26,607 [docker-java-stream-1089867659] INFO t.e.10.1 - Pulling image layers: 0 pending, 9 downloaded, 3 extracted, (382 MB/384 MB)
5712026-01-08 02:30:29,932 [docker-java-stream-1089867659] INFO t.e.10.1 - Pulling image layers: 0 pending, 9 downloaded, 4 extracted, (384 MB/384 MB)
5722026-01-08 02:30:29,939 [docker-java-stream-1089867659] INFO t.e.10.1 - Pulling image layers: 0 pending, 9 downloaded, 5 extracted, (384 MB/384 MB)
5732026-01-08 02:30:29,949 [docker-java-stream-1089867659] INFO t.e.10.1 - Pulling image layers: 0 pending, 9 downloaded, 6 extracted, (384 MB/384 MB)
5742026-01-08 02:30:29,956 [docker-java-stream-1089867659] INFO t.e.10.1 - Pulling image layers: 0 pending, 9 downloaded, 7 extracted, (384 MB/384 MB)
5752026-01-08 02:30:29,991 [docker-java-stream-1089867659] INFO t.e.10.1 - Pulling image layers: 0 pending, 9 downloaded, 8 extracted, (384 MB/384 MB)
5762026-01-08 02:30:30,004 [docker-java-stream-1089867659] INFO t.e.10.1 - Pulling image layers: 0 pending, 9 downloaded, 9 extracted, (384 MB/384 MB)
5772026-01-08 02:30:30,009 [docker-java-stream-1089867659] INFO t.e.10.1 - Pull complete. 9 layers, pulled in 13s (downloaded 384 MB at 29 MB/s)
5782026-01-08 02:30:30,009 [io-compute-2] INFO t.e.10.1 - Image elasticsearch:7.10.1 pull took PT14.385244512S
5792026-01-08 02:30:30,012 [io-compute-2] INFO t.e.10.1 - Creating container for image: elasticsearch:7.10.1
5802026-01-08 02:30:30,249 [io-compute-2] INFO t.e.10.1 - Container elasticsearch:7.10.1 is starting: e4fa4155714f432a2b70d3ca44cc9eb5f6d78bcb6c32e6e3b2d453863dee1e98
5812026-01-08 02:30:39,317 [io-compute-2] INFO t.e.10.1 - Container elasticsearch:7.10.1 started in PT9.305070094S
5822026-01-08 02:30:39,482 [io-compute-0] INFO o.h.e.s.EmberServerBuilderCompanionPlatform - Ember-Server service bound to address: [::]:9999
5832026-01-08 02:30:39,482 [io-compute-0] INFO lila.search.app.App - lila-search started at /[0:0:0:0:0:0:0:0]:9999
5842026-01-08 02:30:39,482 [io-compute-0] INFO lila.search.app.App - BuildInfo: version: 3.4.3-SNAPSHOT, gitHeadCommit: 1b1ef7a
585[info] lila.search.app.test.IntegrationSuite
586[info] + health check should return healthy 730ms
587[info] + forum 2s
588[info] + ublog 2s
589[info] + team 2s
590[info] - study 1s
591[info] + game 2s
592[info] *************FAILURES**************
593[info] lila.search.app.test.IntegrationSuite
594[error] - study 1s
595[error] RuntimeException: illegal_argument_exception IOException while reading synonyms_path_path: /usr/share/elasticsearch/config/synonyms/chess_synonyms.txt
596[error]
597[error] ElasticError.scala:23 com.sksamuel.elastic4s.ElasticError#asException$$anonfun$2
598[error] Option.scala:265 scala.Option#fold
599[error] ElasticError.scala:23 com.sksamuel.elastic4s.ElasticError#asException
600[error] IntegrationSuite.scala:33 lila.search.app.test.IntegrationSuite$given_Raise_IO_ElasticError$#raise
601[error] IntegrationSuite.scala:32 lila.search.app.test.IntegrationSuite$given_Raise_IO_ElasticError$#raise
602[error] raise.scala:27 cats.mtl.syntax.RaiseOps$#raise$extension
603[error] package.scala:63 lila.search.package$package$#unitOrFail$$anonfun$1
604[error] responses.scala:41 com.sksamuel.elastic4s.Response#fold
605[error] responses.scala:3 com.sksamuel.elastic4s.Response#fold$
606[error] responses.scala:65 com.sksamuel.elastic4s.RequestFailure#fold
607[error] package.scala:63 lila.search.package$package$#unitOrFail
608[error] ESClient.scala:94 lila.search.ESClient$$anon$1#putMapping$$anonfun$1
609[error] Pull.scala:1241 >>$extension @ fs2.Pull$#fs2$Pull$$$_$go$1
610[error] InterruptContext.scala:49 guarantee$extension @ fs2.internal.InterruptContext#complete
611[error] Pull.scala:1241 >>$extension @ fs2.Pull$#fs2$Pull$$$_$go$1
612[error] Metrics.scala:147 traverse_ @ org.http4s.client.middleware.Metrics$#executeRequestAndRecordMetrics$$anonfun$1$$anonfun$2$$anonfun$1$$anonfun$1
613[error] Scope.scala:278 get @ fs2.internal.Scope#openScope
614[error] Metrics.scala:138 flatMap @ org.http4s.client.middleware.Metrics$#executeRequestAndRecordMetrics$$anonfun$1$$anonfun$2$$anonfun$1
615[error] Metrics.scala:137 flatMap @ org.http4s.client.middleware.Metrics$#executeRequestAndRecordMetrics$$anonfun$1$$anonfun$2
616[error] InterruptContext.scala:49 guarantee$extension @ fs2.internal.InterruptContext#complete
617[error] Pull.scala:1241 >>$extension @ fs2.Pull$#fs2$Pull$$$_$go$1
618[error]
619[error] Caused by: java.lang.RuntimeException: CausedBy(no_such_file_exception,/usr/share/elasticsearch/config/synonyms/chess_synonyms.txt,HashMap())
620[error]
621[error] ElasticError.scala:23 com.sksamuel.elastic4s.ElasticError#asException$$anonfun$2
622[error] Option.scala:265 scala.Option#fold
623[error] ElasticError.scala:23 com.sksamuel.elastic4s.ElasticError#asException
624[error] IntegrationSuite.scala:33 lila.search.app.test.IntegrationSuite$given_Raise_IO_ElasticError$#raise
625[error] IntegrationSuite.scala:32 lila.search.app.test.IntegrationSuite$given_Raise_IO_ElasticError$#raise
626[error] raise.scala:27 cats.mtl.syntax.RaiseOps$#raise$extension
627[error] package.scala:63 lila.search.package$package$#unitOrFail$$anonfun$1
628[error] responses.scala:41 com.sksamuel.elastic4s.Response#fold
629[error] responses.scala:3 com.sksamuel.elastic4s.Response#fold$
630[error] responses.scala:65 com.sksamuel.elastic4s.RequestFailure#fold
631[error] package.scala:63 lila.search.package$package$#unitOrFail
632[error] ESClient.scala:94 lila.search.ESClient$$anon$1#putMapping$$anonfun$1
633[error] IOFiber.scala:1235 cats.effect.IOFiber#succeeded
634[error] IOFiber.scala:259 cats.effect.IOFiber#runLoop
635[error] IOFiber.scala:1403 cats.effect.IOFiber#asyncContinueSuccessfulR
636[error] IOFiber.scala:123 cats.effect.IOFiber#run
637[error] WorkerThread.scala:935 cats.effect.unsafe.WorkerThread#run
638[error]
639Starting build for ProjectRef(file:/build/repo/,ingestor-cli) (lila-search-cli)... [7/12]
640Compile scalacOptions: -encoding, utf8, -unchecked, -language:experimental.macros, -language:higherKinds, -language:implicitConversions, -Xkind-projector, -Wvalue-discard, -Wnonunit-statement, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -release, 21, -indent, -rewrite, -explain, -Wall, -Xsemanticdb, -semanticdb-target, /build/repo/modules/ingestor-cli/target/scala-3.8.0-RC6/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
641[info] compiling 3 Scala sources to /build/repo/modules/ingestor-cli/target/scala-3.8.0-RC6/classes ...
642[info] [patched file /build/repo/modules/ingestor-cli/target/scala-3.8.0-RC6/src_managed/main/sbt-buildinfo/BuildInfo.scala]
643[info] done compiling
644[info] compiling 1 Scala source to /build/repo/modules/ingestor-cli/target/scala-3.8.0-RC6/classes ...
645[info] done compiling
646[info] compiling 1 Scala source to /build/repo/modules/ingestor-cli/target/scala-3.8.0-RC6/test-classes ...
647[info] done compiling
648[info] lila.search.ingestor.CLITest
649[info] + index command 63ms
650[info] + index command with watch flag 2ms
651Starting build for ProjectRef(file:/build/repo/,app) (lila-search-app)... [8/12]
652Compile scalacOptions: -encoding, utf8, -unchecked, -language:experimental.macros, -language:higherKinds, -language:implicitConversions, -Xkind-projector, -Wvalue-discard, -Wnonunit-statement, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -release, 21, -indent, -rewrite, -explain, -Wall, -Xsemanticdb, -semanticdb-target, /build/repo/modules/app/target/scala-3.8.0-RC6/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
653Starting build for ProjectRef(file:/build/repo/,ingestor-app) (lila-search-ingestor)... [9/12]
654Compile scalacOptions: -encoding, utf8, -unchecked, -language:experimental.macros, -language:higherKinds, -language:implicitConversions, -Xkind-projector, -Wvalue-discard, -Wnonunit-statement, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -release, 21, -indent, -rewrite, -explain, -Wall, -Xsemanticdb, -semanticdb-target, /build/repo/modules/ingestor-app/target/scala-3.8.0-RC6/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
655[info] compiling 2 Scala sources to /build/repo/modules/ingestor-app/target/scala-3.8.0-RC6/classes ...
656[info] [patched file /build/repo/modules/ingestor-app/target/scala-3.8.0-RC6/src_managed/main/sbt-buildinfo/BuildInfo.scala]
657[info] done compiling
658[info] compiling 1 Scala source to /build/repo/modules/ingestor-app/target/scala-3.8.0-RC6/classes ...
659[info] done compiling
660Starting build for ProjectRef(file:/build/repo/,ingestor-core) (ingestor-core)... [10/12]
661Compile scalacOptions: -encoding, utf8, -unchecked, -language:experimental.macros, -language:higherKinds, -language:implicitConversions, -Xkind-projector, -Wvalue-discard, -Wnonunit-statement, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -release, 21, -indent, -rewrite, -explain, -Wall, -Xsemanticdb, -semanticdb-target, /build/repo/modules/ingestor-core/target/scala-3.8.0-RC6/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
662[info] compiling 1 Scala source to /build/repo/modules/ingestor-core/target/scala-3.8.0-RC6/test-classes ...
663[info] done compiling
664[info] lila.search.ingestor.HasDocIdTest
665[info] + distincByDocId is empty when input is empty 6ms
666[info] + distincByDocId is empty when all docIds are none 351ms
667[info] + distincByDocId contains only item with defined docId 350ms
668[info] + distincByDocId is idempotent 347ms
669[info] + distincByDocId == reverse.distincBy.reverse 354ms
670Starting build for ProjectRef(file:/build/repo/,elastic) (elastic)... [11/12]
671Compile scalacOptions: -encoding, utf8, -unchecked, -language:experimental.macros, -language:higherKinds, -language:implicitConversions, -Xkind-projector, -Wvalue-discard, -Wnonunit-statement, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -release, 21, -indent, -rewrite, -explain, -Wall, -Xsemanticdb, -semanticdb-target, /build/repo/modules/elastic/target/scala-3.8.0-RC6/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
672[info] compiling 2 Scala sources to /build/repo/modules/elastic/target/scala-3.8.0-RC6/test-classes ...
673[info] [patched file /build/repo/modules/elastic/target/scala-3.8.0-RC6/src_managed/test/Snapshot4sBuildInfo.scala]
674[info] done compiling
675SLF4J(W): No SLF4J providers were found.
676SLF4J(W): Defaulting to no-operation (NOP) logger implementation
677SLF4J(W): See https://www.slf4j.org/codes.html#noProviders for further details.
678[info] lila.search.MappingGeneratorSuite
679[info] + Study index 18ms
680[info] + Game index 17ms
681[info] + Forum index 17ms
682[info] + Ublog index 17ms
683[info] + Team index 0ms
684
685************************
686Build summary:
687[{
688 "module": "client",
689 "compile": {"status": "ok", "tookMs": 17538, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
690 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
691 "test-compile": {"status": "ok", "tookMs": 1771, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
692 "test": {"status": "ok", "tookMs": 362, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
693 "publish": {"status": "skipped", "tookMs": 0},
694 "metadata": {
695 "crossScalaVersions": ["3.7.4"]
696}
697},{
698 "module": "lila-mongo",
699 "compile": {"status": "ok", "tookMs": 4857, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
700 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
701 "test-compile": {"status": "ok", "tookMs": 247, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
702 "test": {"status": "ok", "tookMs": 256, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
703 "publish": {"status": "ok", "tookMs": 4},
704 "metadata": {
705 "crossScalaVersions": ["3.7.4"]
706}
707},{
708 "module": "core",
709 "compile": {"status": "ok", "tookMs": 104, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
710 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
711 "test-compile": {"status": "ok", "tookMs": 117, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
712 "test": {"status": "ok", "tookMs": 137, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
713 "publish": {"status": "skipped", "tookMs": 0},
714 "metadata": {
715 "crossScalaVersions": ["3.7.4"]
716}
717},{
718 "module": "api",
719 "compile": {"status": "ok", "tookMs": 201, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
720 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
721 "test-compile": {"status": "ok", "tookMs": 243, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
722 "test": {"status": "ok", "tookMs": 198, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
723 "publish": {"status": "skipped", "tookMs": 0},
724 "metadata": {
725 "crossScalaVersions": ["3.7.4"]
726}
727},{
728 "module": "lila-game-export",
729 "compile": {"status": "ok", "tookMs": 1934, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
730 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
731 "test-compile": {"status": "ok", "tookMs": 1236, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
732 "test": {"status": "ok", "tookMs": 837, "passed": 4, "failed": 0, "ignored": 0, "skipped": 0, "total": 4, "byFramework": [{"framework": "unknown", "stats": {"passed": 4, "failed": 0, "ignored": 0, "skipped": 0, "total": 4}}]},
733 "publish": {"status": "ok", "tookMs": 3},
734 "metadata": {
735 "crossScalaVersions": ["3.7.4"]
736}
737},{
738 "module": "root",
739 "compile": {"status": "ok", "tookMs": 43, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
740 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
741 "test-compile": {"status": "ok", "tookMs": 59, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
742 "test": {"status": "ok", "tookMs": 58, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
743 "publish": {"status": "ok", "tookMs": 1},
744 "metadata": {
745 "crossScalaVersions": ["3.7.4"]
746}
747},{
748 "module": "e2e",
749 "compile": {"status": "ok", "tookMs": 10929, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
750 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
751 "test-compile": {"status": "ok", "tookMs": 9883, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
752 "test": {"status": "failed", "tookMs": 30308, "passed": 8, "failed": 1, "ignored": 0, "skipped": 0, "total": 9, "byFramework": [{"framework": "unknown", "stats": {"passed": 8, "failed": 1, "ignored": 0, "skipped": 0, "total": 9}}]},
753 "publish": {"status": "ok", "tookMs": 3},
754 "metadata": {
755 "crossScalaVersions": ["3.7.4"]
756}
757},{
758 "module": "lila-search-cli",
759 "compile": {"status": "ok", "tookMs": 1444, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
760 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
761 "test-compile": {"status": "ok", "tookMs": 1580, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
762 "test": {"status": "ok", "tookMs": 1037, "passed": 2, "failed": 0, "ignored": 0, "skipped": 0, "total": 2, "byFramework": [{"framework": "unknown", "stats": {"passed": 2, "failed": 0, "ignored": 0, "skipped": 0, "total": 2}}]},
763 "publish": {"status": "ok", "tookMs": 2},
764 "metadata": {
765 "crossScalaVersions": ["3.7.4"]
766}
767},{
768 "module": "lila-search-app",
769 "compile": {"status": "ok", "tookMs": 315, "warnings": 3, "errors": 0, "sourceVersion": "3.8"},
770 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
771 "test-compile": {"status": "ok", "tookMs": 334, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
772 "test": {"status": "ok", "tookMs": 350, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
773 "publish": {"status": "ok", "tookMs": 3},
774 "metadata": {
775 "crossScalaVersions": ["3.7.4"]
776}
777},{
778 "module": "lila-search-ingestor",
779 "compile": {"status": "ok", "tookMs": 964, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
780 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
781 "test-compile": {"status": "ok", "tookMs": 740, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
782 "test": {"status": "ok", "tookMs": 559, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
783 "publish": {"status": "ok", "tookMs": 2},
784 "metadata": {
785 "crossScalaVersions": ["3.7.4"]
786}
787},{
788 "module": "ingestor-core",
789 "compile": {"status": "ok", "tookMs": 490, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
790 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
791 "test-compile": {"status": "ok", "tookMs": 1378, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
792 "test": {"status": "ok", "tookMs": 1323, "passed": 5, "failed": 0, "ignored": 0, "skipped": 0, "total": 5, "byFramework": [{"framework": "unknown", "stats": {"passed": 5, "failed": 0, "ignored": 0, "skipped": 0, "total": 5}}]},
793 "publish": {"status": "ok", "tookMs": 4},
794 "metadata": {
795 "crossScalaVersions": ["3.7.4"]
796}
797},{
798 "module": "elastic",
799 "compile": {"status": "ok", "tookMs": 251, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
800 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
801 "test-compile": {"status": "ok", "tookMs": 779, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
802 "test": {"status": "ok", "tookMs": 986, "passed": 5, "failed": 0, "ignored": 0, "skipped": 0, "total": 5, "byFramework": [{"framework": "unknown", "stats": {"passed": 5, "failed": 0, "ignored": 0, "skipped": 0, "total": 5}}]},
803 "publish": {"status": "ok", "tookMs": 3},
804 "metadata": {
805 "crossScalaVersions": ["3.7.4"]
806}
807}]
808************************
809[error] Scala3CommunityBuild$ProjectBuildFailureException: 1 module(s) finished with failures: e2e
810[error] (Global / runBuild) Scala3CommunityBuild$ProjectBuildFailureException: 1 module(s) finished with failures: e2e
811[error] Total time: 116 s (0:01:56.0), completed Jan 8, 2026, 2:31:02 AM
812[0JBuild failed, not retrying.