Build Logs

lichess-org/lila-search • dotty-staging/dotty:fix-23773:2025-11-22

Errors

0

Warnings

312

Total Lines

684

1##################################
2Clonning https://github.com/lichess-org/lila-search.git into /build/repo using revision
3##################################
4----
5Preparing build for 3.8.1-RC1-bin-20251120-60444cb
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.1-RC1-bin-20251120-60444cb
15Execute tests: false
16sbt project found:
17No prepare script found for project lichess-org/lila-search
18/opencb/project-builder/sbt/prepare-project.sh: line 107: /root/.ssh/config: No such file or directory
19##################################
20Scala version: 3.8.1-RC1-bin-20251120-60444cb
21Targets: *%*
22Project projectConfig: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"25"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"compile-only","migrationVersions":[],"sourcePatches":[]}
23##################################
24Using extra scalacOptions: ,REQUIRE:-source:3.8
25Filtering out scalacOptions: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
26[sbt_options] declare -a sbt_options=()
27[process_args] java_version = '25'
28[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_25/rt.jar'
29# Executing command line:
30java
31-Dfile.encoding=UTF-8
32-Dcommunitybuild.scala=3.8.1-RC1-bin-20251120-60444cb
33-Dcommunitybuild.project.dependencies.add=
34-Xmx7G
35-Xms4G
36-Xss8M
37-Dsbt.script=/root/.sdkman/candidates/sbt/current/bin/sbt
38-Dscala.ext.dirs=/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_25
39-jar
40/root/.sdkman/candidates/sbt/1.11.5/bin/sbt-launch.jar
41"setCrossScalaVersions 3.8.1-RC1-bin-20251120-60444cb"
42"++3.8.1-RC1-bin-20251120-60444cb -v"
43"mapScalacOptions ",REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s" ",-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e""
44"set every credentials := Nil"
45"excludeLibraryDependency com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}"
46"removeScalacOptionsStartingWith -P:wartremover"
47
48moduleMappings
49"runBuild 3.8.1-RC1-bin-20251120-60444cb """{"projects":{"exclude":[],"overrides":{}},"java":{"version":"25"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"compile-only","migrationVersions":[],"sourcePatches":[]}""" *%*"
50
51[info] [launcher] getting org.scala-sbt sbt 1.11.7 (this may take some time)...
52WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
53WARNING: 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)
54WARNING: Please consider reporting this to the maintainers of class net.openhft.hashing.UnsafeAccess
55WARNING: sun.misc.Unsafe::arrayBaseOffset will be removed in a future release
56WARNING: A restricted method in java.lang.System has been called
57WARNING: 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)
58WARNING: Use --enable-native-access=ALL-UNNAMED to avoid a warning for callers in this module
59WARNING: Restricted methods will be blocked in a future release unless native access is enabled
60
61[info] welcome to sbt 1.11.7 (Eclipse Adoptium Java 25)
62[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
63[info] loading project definition from /build/repo/project
64[info] compiling 4 Scala sources to /build/repo/project/target/scala-2.12/sbt-1.0/classes ...
65[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.20. Compiling...
66[info] Compilation completed in 8.026s.
67[info] done compiling
68[info] loading settings for project root from build.sbt, version.sbt...
69[info] resolving key references (14739 settings) ...
70[info] set current project to root (in build file:/build/repo/)
71[warn] there's a key that's not used by any other settings/tasks:
72[warn]
73[warn] * ThisBuild / Docker / maintainer
74[warn] +- /build/repo/build.sbt:4
75[warn]
76[warn] note: a setting might still be used by a command; to exclude a key from this `lintUnused` check
77[warn] either append it to `Global / excludeLintKeys` or call .withRank(KeyRanks.Invisible) on the key
78Execute setCrossScalaVersions: 3.8.1-RC1-bin-20251120-60444cb
79OpenCB::Changing crossVersion 3.7.4 -> 3.8.1-RC1-bin-20251120-60444cb in e2e/crossScalaVersions
80OpenCB::Changing crossVersion 3.7.4 -> 3.8.1-RC1-bin-20251120-60444cb in api/crossScalaVersions
81OpenCB::Changing crossVersion 3.7.4 -> 3.8.1-RC1-bin-20251120-60444cb in core/crossScalaVersions
82OpenCB::Changing crossVersion 3.7.4 -> 3.8.1-RC1-bin-20251120-60444cb in ingestor-app/crossScalaVersions
83OpenCB::Changing crossVersion 3.7.4 -> 3.8.1-RC1-bin-20251120-60444cb in elastic/crossScalaVersions
84OpenCB::Changing crossVersion 3.7.4 -> 3.8.1-RC1-bin-20251120-60444cb in app/crossScalaVersions
85OpenCB::Changing crossVersion 3.7.4 -> 3.8.1-RC1-bin-20251120-60444cb in ingestor-core/crossScalaVersions
86OpenCB::Changing crossVersion 3.7.4 -> 3.8.1-RC1-bin-20251120-60444cb in client/crossScalaVersions
87OpenCB::Changing crossVersion 3.7.4 -> 3.8.1-RC1-bin-20251120-60444cb in lila-mongo/crossScalaVersions
88OpenCB::Changing crossVersion 3.7.4 -> 3.8.1-RC1-bin-20251120-60444cb in ingestor-cli/crossScalaVersions
89OpenCB::Changing crossVersion 3.7.4 -> 3.8.1-RC1-bin-20251120-60444cb in lila-game-export/crossScalaVersions
90OpenCB::Changing crossVersion 3.7.4 -> 3.8.1-RC1-bin-20251120-60444cb in root/crossScalaVersions
91[info] set current project to root (in build file:/build/repo/)
92[info] Setting Scala version to 3.8.1-RC1-bin-20251120-60444cb on 12 projects.
93[info] Switching Scala version on:
94[info] ingestor-core (3.8.1-RC1-bin-20251120-60444cb)
95[info] * root (3.8.1-RC1-bin-20251120-60444cb)
96[info] ingestor-app (3.8.1-RC1-bin-20251120-60444cb)
97[info] elastic (3.8.1-RC1-bin-20251120-60444cb)
98[info] ingestor-cli (3.8.1-RC1-bin-20251120-60444cb)
99[info] lila-mongo (3.8.1-RC1-bin-20251120-60444cb)
100[info] lila-game-export (3.8.1-RC1-bin-20251120-60444cb)
101[info] client (3.8.1-RC1-bin-20251120-60444cb)
102[info] app (3.8.1-RC1-bin-20251120-60444cb)
103[info] api (3.8.1-RC1-bin-20251120-60444cb)
104[info] core (3.8.1-RC1-bin-20251120-60444cb)
105[info] e2e (3.8.1-RC1-bin-20251120-60444cb)
106[info] Excluding projects:
107[info] Reapplying settings...
108[info] set current project to root (in build file:/build/repo/)
109Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
110[info] Reapplying settings...
111[info] set current project to root (in build file:/build/repo/)
112[info] Defining Global / credentials, api / credentials and 10 others.
113[info] The new values will be used by Compile / scalafmtOnly, IntegrationTest / scalafmtOnly and 94 others.
114[info] Run `last` for details.
115[info] Reapplying settings...
116[info] set current project to root (in build file:/build/repo/)
117Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
118[info] Reapplying settings...
119OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
120
121 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:336)
122 Did you mean app / allExcludeDependencies ?
123 , retry without global scopes
124[info] Reapplying settings...
125[info] set current project to root (in build file:/build/repo/)
126Execute removeScalacOptionsStartingWith: -P:wartremover
127[info] Reapplying settings...
128[info] set current project to root (in build file:/build/repo/)
129[success] Total time: 0 s, completed Nov 22, 2025, 5:51:43 PM
130Build config: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"25"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"compile-only","migrationVersions":[],"sourcePatches":[]}
131Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),CompileOnly,List()))
132Starting build...
133Projects: Set(ingestor-core, root, ingestor-app, elastic, ingestor-cli, lila-mongo, lila-game-export, client, app, api, core, e2e)
134Starting build for ProjectRef(file:/build/repo/,client) (client)... [0/12]
135OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
136OpenCB::Filter out '-deprecation', matches setting pattern '^-?-deprecation'
137OpenCB::Filter out '-feature', matches setting pattern '^-?-feature'
138OpenCB::Filter out '-Xfatal-warnings', matches setting pattern '^-?-Xfatal-warnings'
139Compile 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.1-RC1-bin-20251120-60444cb/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
140[info] compiling 16 Scala sources to /build/repo/modules/core/target/scala-3.8.1-RC1-bin-20251120-60444cb/classes ...
141[info] [patched file /build/repo/modules/core/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/core/Ids.scala]
142[info] [patched file /build/repo/modules/core/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/core/SizeInt.scala]
143[info] [patched file /build/repo/modules/core/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/core/DateTimeFormat.scala]
144[info] [patched file /build/repo/modules/core/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/core/IndexFormat.scala]
145[info] [patched file /build/repo/modules/core/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/core/FromInt.scala]
146[info] [patched file /build/repo/modules/core/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/core/IdString.scala]
147[info] [patched file /build/repo/modules/core/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/core/IdFormat.scala]
148[info] [patched file /build/repo/modules/core/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/core/PlayerIds.scala]
149[info] [patched file /build/repo/modules/core/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/core/DateTime.scala]
150[info] [patched file /build/repo/modules/core/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/core/FromFormat.scala]
151[info] [patched file /build/repo/modules/core/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/core/SizeFormat.scala]
152[info] [patched file /build/repo/modules/core/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/core/Strings.scala]
153[info] [patched file /build/repo/modules/core/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/core/IndexString.scala]
154[info] done compiling
155Nov 22, 2025 5:52:16 PM software.amazon.smithy.openapi.fromsmithy.mappers.RemoveUnusedComponents removalRound
156INFO: Removing unused OpenAPI components: [#/components/schemas/CountInput, #/components/schemas/SearchOutput, #/components/schemas/InternalServerError, #/components/schemas/SearchInput, #/components/schemas/CountOutput]
157Nov 22, 2025 5:52:16 PM software.amazon.smithy.openapi.fromsmithy.mappers.RemoveUnusedComponents removalRound
158INFO: Removing unused OpenAPI components: [#/components/schemas/HealthCheckOutput]
159[info] compiling 19 Scala sources to /build/repo/modules/api/target/scala-3.8.1-RC1-bin-20251120-60444cb/classes ...
160[info] [patched file /build/repo/modules/api/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/spec/GameSorting.scala]
161[info] [patched file /build/repo/modules/api/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/spec/StudySortField.scala]
162[info] [patched file /build/repo/modules/api/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/spec/Query.scala]
163[info] [patched file /build/repo/modules/api/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/spec/DateRange.scala]
164[info] [patched file /build/repo/modules/api/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/spec/CountOutput.scala]
165[info] [patched file /build/repo/modules/api/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/spec/Perfs.scala]
166[info] [patched file /build/repo/modules/api/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/spec/IntRange.scala]
167[info] [patched file /build/repo/modules/api/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/spec/Order.scala]
168[info] [patched file /build/repo/modules/api/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/spec/HealthCheckOutput.scala]
169[info] [patched file /build/repo/modules/api/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/spec/SearchInput.scala]
170[info] [patched file /build/repo/modules/api/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/spec/InternalServerError.scala]
171[info] [patched file /build/repo/modules/api/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/spec/SearchService.scala]
172[info] [patched file /build/repo/modules/api/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/spec/StudySorting.scala]
173[info] [patched file /build/repo/modules/api/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/spec/CountInput.scala]
174[info] [patched file /build/repo/modules/api/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/spec/SortBlogsBy.scala]
175[info] [patched file /build/repo/modules/api/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/spec/SearchOutput.scala]
176[info] [patched file /build/repo/modules/api/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/spec/HealthService.scala]
177[info] [patched file /build/repo/modules/api/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/spec/ElasticStatus.scala]
178[info] done compiling
179[info] compiling 3 Scala sources to /build/repo/modules/client/target/scala-3.8.1-RC1-bin-20251120-60444cb/classes ...
180[info] done compiling
181[info] compiling 16 Scala sources to /build/repo/modules/core/target/scala-3.8.1-RC1-bin-20251120-60444cb/classes ...
182[info] done compiling
183Nov 22, 2025 5:52:27 PM software.amazon.smithy.openapi.fromsmithy.mappers.RemoveUnusedComponents removalRound
184INFO: Removing unused OpenAPI components: [#/components/schemas/CountInput, #/components/schemas/SearchOutput, #/components/schemas/InternalServerError, #/components/schemas/SearchInput, #/components/schemas/CountOutput]
185Nov 22, 2025 5:52:27 PM software.amazon.smithy.openapi.fromsmithy.mappers.RemoveUnusedComponents removalRound
186INFO: Removing unused OpenAPI components: [#/components/schemas/HealthCheckOutput]
187Starting build for ProjectRef(file:/build/repo/,lila-mongo) (lila-mongo)... [1/12]
188Compile 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.1-RC1-bin-20251120-60444cb/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
189[info] compiling 10 Scala sources to /build/repo/modules/lila-mongo/target/scala-3.8.1-RC1-bin-20251120-60444cb/classes ...
190[warn] -- [E222] Syntax Warning: /build/repo/modules/lila-mongo/src/main/scala/mongo.game.scala:2:8
191[warn] 2 |package ingestor
192[warn] |^
193[warn] |The package name `mongo.game$package` will be encoded on the classpath, and can lead to undefined behaviour.
194[warn] 3 |import cats.effect.*
195[warn] 4 |import cats.syntax.all.*
196[warn] 5 |import chess.Clock.Config
197[warn] 6 |import chess.Speed
198[warn] 7 |import chess.variant.*
199[warn] 8 |import com.mongodb.client.model.changestream.FullDocument
200[warn] 9 |import com.mongodb.client.model.changestream.OperationType.*
201[warn] 10 |import io.circe.*
202[warn] 11 |import mongo4cats.circe.*
203[warn] 12 |import mongo4cats.collection.MongoCollection
204[warn] 13 |import mongo4cats.database.MongoDatabase
205[warn] 14 |import mongo4cats.models.collection.ChangeStreamDocument
206[warn] 15 |import mongo4cats.operations.{ Aggregate, Filter, Projection }
207[warn] 16 |import org.typelevel.log4cats.syntax.*
208[warn] 17 |import org.typelevel.log4cats.{ Logger, LoggerFactory }
209[warn] 18 |import java.time.Instant
210[warn] 19 |import scala.concurrent.duration.*
211[warn] 20 |import Repo.{ *, given }
212[warn] 21 |object GameRepo:
213[warn] 22 | private val interestedOperations = List(UPDATE, DELETE).map(_.getValue)
214[warn] 23 | private val eventFilter = Filter.in("operationType", interestedOperations)
215[warn] 24 | private val interestedEventFields =
216[warn] 25 | List(
217[warn] 26 | "operationType",
218[warn] 27 | "clusterTime",
219[warn] 28 | "documentKey._id",
220[warn] 29 | "fullDocument"
221[warn] 30 | ) // TODO only include interestedFields
222[warn] 31 | private val eventProjection = Projection.include(interestedEventFields)
223[warn] 32 | // https://github.com/lichess-org/lila/blob/65e6dd88e99cfa0068bc790a4518a6edb3513f54/modules/gameSearch/src/main/GameSearchApi.scala#L52
224[warn] 33 | val gameFilter: Filter =
225[warn] 34 | // Filter games that finished
226[warn] 35 | // https://github.com/lichess-org/scalachess/blob/18edf46a50445048fdc2ee5a83752e5b3884f490/core/src/main/scala/Status.scala#L18-L27
227[warn] 36 | val statusFilter = Filter.gte("s", 30)
228[warn] 37 | val noImportFilter = Filter.ne("so", 7)
229[warn] 38 | // us fields is the list of player ids, if it's missing then it's
230[warn] 39 | // an all anonymous (or anonymous vs stockfish) game
231[warn] 40 | val noAllAnonFilter = Filter.exists("us")
232[warn] 41 | statusFilter.and(noImportFilter).and(noAllAnonFilter)
233[warn] 42 | // https://github.com/lichess-org/lila/blob/65e6dd88e99cfa0068bc790a4518a6edb3513f54/modules/gameSearch/src/main/GameSearchApi.scala#L52
234[warn] 43 | val changeFilter: Filter =
235[warn] 44 | // Filter games that finished
236[warn] 45 | // https://github.com/lichess-org/scalachess/blob/18edf46a50445048fdc2ee5a83752e5b3884f490/core/src/main/scala/Status.scala#L18-L27
237[warn] 46 | val statusFilter = Filter.gte("fullDocument.s", 30)
238[warn] 47 | val noImportFilter = Filter.ne("fullDocument.so", 7)
239[warn] 48 | // us fields is the list of player ids, if it's missing then it's
240[warn] 49 | // an all anonymous (or anonymous vs stockfish) game
241[warn] 50 | val noAllAnonFilter = Filter.exists("fullDocument.us")
242[warn] 51 | statusFilter.and(noImportFilter).and(noAllAnonFilter)
243[warn] 52 | private val aggregate =
244[warn] 53 | Aggregate.matchBy(eventFilter.and(changeFilter)).combinedWith(Aggregate.project(eventProjection))
245[warn] 54 | def apply(mongo: MongoDatabase[IO], config: IngestorConfig.Game)(using
246[warn] 55 | LoggerFactory[IO]
247[warn] 56 | ): IO[Repo[DbGame]] =
248[warn] 57 | given Logger[IO] = LoggerFactory[IO].getLogger
249[warn] 58 | mongo.getCollectionWithCodec[DbGame]("game5").map(apply(config))
250[warn] 59 | def apply(config: IngestorConfig.Game)(games: MongoCollection[IO, DbGame])(using
251[warn] 60 | Logger[IO]
252[warn] 61 | ): Repo[DbGame] = new:
253[warn] 62 | def watch(since: Option[Instant]): fs2.Stream[IO, Result[DbGame]] =
254[warn] 63 | changes(since)
255[warn] 64 | .map: events =>
256[warn] 65 | val lastEventTimestamp = events.lastOption.flatMap(_.clusterTime).flatMap(_.asInstant)
257[warn] 66 | val (toDelete, toIndex) = events.partition(_.operationType == DELETE)
258[warn] 67 | Result(
259[warn] 68 | toIndex.flatMap(_.fullDocument),
260[warn] 69 | toDelete.flatMap(_.docId.map(Id.apply)),
261[warn] 70 | Nil,
262[warn] 71 | lastEventTimestamp
263[warn] 72 | )
264[warn] 73 | def fetch(since: Instant, until: Instant): fs2.Stream[IO, Result[DbGame]] =
265[warn] 74 | val filter = range(F.createdAt)(since, until.some)
266[warn] 75 | fs2.Stream.eval(info"Fetching games from $since to $until") *>
267[warn] 76 | games
268[warn] 77 | .find(filter.and(gameFilter))
269[warn] 78 | // .hint("ca_-1")
270[warn] 79 | .boundedStream(config.batchSize)
271[warn] 80 | .chunkN(config.batchSize)
272[warn] 81 | .map(_.toList)
273[warn] 82 | .metered(1.second) // to avoid overloading the elasticsearch
274[warn] 83 | .map(ds => Result(ds, Nil, Nil, None))
275[warn] 84 | private def changes(since: Option[Instant]): fs2.Stream[IO, List[ChangeStreamDocument[DbGame]]] =
276[warn] 85 | val builder = games.watch(aggregate)
277[warn] 86 | since
278[warn] 87 | .fold(builder)(x => builder.startAtOperationTime(x.asBsonTimestamp))
279[warn] 88 | .fullDocument(FullDocument.UPDATE_LOOKUP) // this is required for update event
280[warn] 89 | .batchSize(config.batchSize)
281[warn] 90 | .boundedStream(config.batchSize)
282[warn] 91 | .groupWithin(config.batchSize, config.timeWindows.second)
283[warn] 92 | .evalTap(
284[warn] 93 | _.traverse_(x =>
285[warn] 94 | info"Received $x without p0 or p1 fields".whenA(x.fullDocument.exists(_.shouldDebug))
286[warn] 95 | )
287[warn] 96 | )
288[warn] 97 | .map(_.toList.distincByDocId)
289[warn] 98 | object F:
290[warn] 99 | val createdAt = "ca"
291[warn] 100 | val updatedAt = "ua"
292[warn] 101 |type PlayerId = String
293[warn] 102 |case class DbGame(
294[warn] 103 | id: String, // _id
295[warn] 104 | players: List[PlayerId], // us
296[warn] 105 | winnerId: Option[PlayerId], // wid
297[warn] 106 | createdAt: Instant, // ca
298[warn] 107 | movedAt: Instant, // ua
299[warn] 108 | ply: Int, // t
300[warn] 109 | analysed: Option[Boolean], // an
301[warn] 110 | whitePlayer: Option[DbPlayer], // p0
302[warn] 111 | blackPlayer: Option[DbPlayer], // p1
303[warn] 112 | playerIds: String, // is
304[warn] 113 | binaryPieces: Option[Array[Byte]], // ps
305[warn] 114 | huffmanPgn: Option[Array[Byte]], // hp
306[warn] 115 | status: Int, // s
307[warn] 116 | encodedClock: Option[Array[Byte]], // c
308[warn] 117 | moveTimes: Option[Array[Byte]], // mt
309[warn] 118 | encodedWhiteClock: Option[Array[Byte]], // cw
310[warn] 119 | encodedBlackClock: Option[Array[Byte]], // cb
311[warn] 120 | rated: Option[Boolean], // ra
312[warn] 121 | variant: Option[Int], // v
313[warn] 122 | source: Option[Int], // so
314[warn] 123 | winnerColor: Option[Boolean] // w
315[warn] 124 |):
316[warn] 125 | def clockConfig: Option[Config] = encodedClock.flatMap(ClockDecoder.read)
317[warn] 126 | def clockInit: Option[Int] = clockConfig.map(_.limitSeconds.value)
318[warn] 127 | def clockInc: Option[Int] = clockConfig.map(_.incrementSeconds.value)
319[warn] 128 | def whiteId: Option[PlayerId] = players.headOption
320[warn] 129 | def blackId: Option[PlayerId] = players.lift(1)
321[warn] 130 | def variantOrDefault: Variant = Variant.idOrDefault(variant.map(Variant.Id.apply))
322[warn] 131 | def speed: Speed = Speed(clockConfig)
323[warn] 132 | def loser: Option[PlayerId] = players.find(_.some != winnerId)
324[warn] 133 | def aiLevel: Option[Int] = whitePlayer.flatMap(_.aiLevel).orElse(blackPlayer.flatMap(_.aiLevel))
325[warn] 134 | def shouldDebug =
326[warn] 135 | whitePlayer.isEmpty || blackPlayer.isEmpty
327[warn] 136 |object DbGame:
328[warn] 137 | // format: off
329[warn] 138 | given Decoder[DbGame] = Decoder.forProduct21(
330[warn] 139 | "_id", "us", "wid", "ca", "ua", "t", "an", "p0", "p1", "is", "ps",
331[warn] 140 | "hp", "s", "c", "mt", "cw", "cb", "ra", "v", "so", "w")(DbGame.apply)
332[warn] 141 | // format: on
333[warn] 142 | // We don't write to the database so We don't need to implement this
334[warn] 143 | given Encoder[DbGame] = new Encoder[DbGame]:
335[warn] 144 | def apply(a: DbGame): Json = ???
336[warn] 145 |case class DbPlayer(
337[warn] 146 | rating: Option[Int],
338[warn] 147 | ratingDiff: Option[Int],
339[warn] 148 | berserk: Option[Boolean],
340[warn] 149 | aiLevel: Option[Int],
341[warn] 150 | provisional: Option[Boolean],
342[warn] 151 | name: Option[String]
343[warn] 152 |)
344[warn] 153 |object DbPlayer:
345[warn] 154 | given Decoder[DbPlayer] = Decoder.forProduct6("e", "d", "be", "ai", "p", "na")(DbPlayer.apply)
346[warn] 155 | given Encoder[DbPlayer] = Encoder.forProduct6("e", "d", "be", "ai", "p", "na")(p =>
347[warn] 156 | (p.rating, p.ratingDiff, p.berserk, p.aiLevel, p.provisional, p.name)
348[warn] 157 | )
349[warn] 158 |object ClockDecoder:
350[warn] 159 | import chess.*
351[warn] 160 | private def readClockLimit(i: Int) = Clock.LimitSeconds(if i < 181 then i * 60 else (i - 180) * 15)
352[warn] 161 | private inline def toInt(inline b: Byte): Int = b & 0xff
353[warn] 162 | def read(ba: Array[Byte]): Option[Clock.Config] =
354[warn] 163 | ba.take(2).map(toInt) match
355[warn] 164 | case Array(b1, b2) => Clock.Config(readClockLimit(b1), Clock.IncrementSeconds(b2)).some
356[warn] 165 | case _ => None
357[warn] |---------------------------------------------------------------------------
358[warn] | Explanation (enabled by `-explain`)
359[warn] |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
360[warn] | Tools may not handle directories whose names differ from their corresponding package names.
361[warn] | For example, `p-q` is encoded as `p$minusq` when written to the file system.
362[warn] |
363[warn] | Package objects derive their names from the file names, so files such as `myfile.test.scala`
364[warn] | or `myfile-test.scala` can produce encoded names for the generated package objects.
365[warn] |
366[warn] | In this case, the name `mongo.game$package` is encoded as `mongo$u002Egame$package`.
367[warn] ---------------------------------------------------------------------------
368[warn] -- Warning: /build/repo/modules/lila-mongo/src/main/scala/mongo.study.scala:165:26
369[warn] 165 | Map("likes" -> likes) ++ rank.map(r => "rank" -> SearchDateTime.fromInstant(r))
370[warn] | ^^^^^^^^^^^^^^^^^^^^^^^^
371[warn] |A type argument was inferred to be union type Int | lila.search.SearchDateTime
372[warn] |This may indicate a programming error.
373[warn] two warnings found
374[info] done compiling
375Starting build for ProjectRef(file:/build/repo/,core) (core)... [2/12]
376Compile 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.1-RC1-bin-20251120-60444cb/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
377Starting build for ProjectRef(file:/build/repo/,api) (api)... [3/12]
378Compile 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.1-RC1-bin-20251120-60444cb/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
379Starting build for ProjectRef(file:/build/repo/,lila-game-export) (lila-game-export)... [4/12]
380Compile 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.1-RC1-bin-20251120-60444cb/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
381[info] compiling 3 Scala sources to /build/repo/modules/lila-game-export/target/scala-3.8.1-RC1-bin-20251120-60444cb/classes ...
382[info] done compiling
383[info] compiling 1 Scala source to /build/repo/modules/lila-game-export/target/scala-3.8.1-RC1-bin-20251120-60444cb/test-classes ...
384[info] done compiling
385Starting build for ProjectRef(file:/build/repo/,root) (root)... [5/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/target/scala-3.8.1-RC1-bin-20251120-60444cb/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
387Starting build for ProjectRef(file:/build/repo/,e2e) (e2e)... [6/12]
388Compile 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.1-RC1-bin-20251120-60444cb/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
389[info] compiling 22 Scala sources to /build/repo/modules/elastic/target/scala-3.8.1-RC1-bin-20251120-60444cb/classes ...
390[info] [patched file /build/repo/modules/elastic/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/es/ShortField.scala]
391[info] [patched file /build/repo/modules/elastic/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/es/TeamSource.scala]
392[info] [patched file /build/repo/modules/elastic/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/es/TextField.scala]
393[info] [patched file /build/repo/modules/elastic/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/es/StudySource.scala]
394[info] [patched file /build/repo/modules/elastic/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/es/ForumSource.scala]
395[info] [patched file /build/repo/modules/elastic/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/es/GameSource.scala]
396[info] [patched file /build/repo/modules/elastic/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/es/UblogSource.scala]
397[info] [patched file /build/repo/modules/elastic/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/es/KeywordSubfield.scala]
398[info] [patched file /build/repo/modules/elastic/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/es/DateField.scala]
399[info] [patched file /build/repo/modules/elastic/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/es/KeywordField.scala]
400[info] [patched file /build/repo/modules/elastic/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/es/IntField.scala]
401[info] [patched file /build/repo/modules/elastic/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/smithy4s/lila/search/es/BooleanField.scala]
402[info] done compiling
403[info] compiling 11 Scala sources to /build/repo/modules/app/target/scala-3.8.1-RC1-bin-20251120-60444cb/classes ...
404[info] compiling 7 Scala sources to /build/repo/modules/ingestor-core/target/scala-3.8.1-RC1-bin-20251120-60444cb/classes ...
405[warn] -- [E222] Syntax Warning: /build/repo/modules/app/src/main/scala/http.middleware.scala:2:8
406[warn] 2 |package app
407[warn] |^
408[warn] |The package name `http.middleware$package` will be encoded on the classpath, and can lead to undefined behaviour.
409[warn] 3 |import cats.effect.IO
410[warn] 4 |import org.http4s.*
411[warn] 5 |import org.http4s.otel4s.middleware.metrics.OtelMetrics
412[warn] 6 |import org.http4s.server.middleware.*
413[warn] 7 |import org.typelevel.log4cats.LoggerFactory
414[warn] 8 |import org.typelevel.otel4s.metrics.MeterProvider
415[warn] 9 |import scala.concurrent.duration.*
416[warn] 10 |type Middleware = HttpRoutes[IO] => HttpRoutes[IO]
417[warn] 11 |def MkMiddleware(config: HttpServerConfig)(using LoggerFactory[IO], MeterProvider[IO]): IO[Middleware] =
418[warn] 12 | def verboseLogger =
419[warn] 13 | RequestLogger.httpRoutes[IO](true, true).andThen(ResponseLogger.httpRoutes[IO, Request[IO]](true, true))
420[warn] 14 | def logger =
421[warn] 15 | if config.apiLogger then verboseLogger
422[warn] 16 | else ApiErrorLogger.instance(using LoggerFactory[IO].getLogger)
423[warn] 17 | OtelMetrics
424[warn] 18 | .serverMetricsOps[IO]()
425[warn] 19 | .map(org.http4s.server.middleware.Metrics[IO](_))
426[warn] 20 | .map: metrics =>
427[warn] 21 | logger.andThen(AutoSlash(_)).andThen(Timeout(60.seconds)).andThen(metrics)
428[warn] |----------------------------------------------------------------------------
429[warn] | Explanation (enabled by `-explain`)
430[warn] |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
431[warn] | Tools may not handle directories whose names differ from their corresponding package names.
432[warn] | For example, `p-q` is encoded as `p$minusq` when written to the file system.
433[warn] |
434[warn] | Package objects derive their names from the file names, so files such as `myfile.test.scala`
435[warn] | or `myfile-test.scala` can produce encoded names for the generated package objects.
436[warn] |
437[warn] | In this case, the name `http.middleware$package` is encoded as `http$u002Emiddleware$package`.
438[warn] ----------------------------------------------------------------------------
439[warn] -- [E222] Syntax Warning: /build/repo/modules/app/src/main/scala/http.routes.prometheus.scala:2:8
440[warn] 2 |package app
441[warn] |^
442[warn] |The package name `http.routes.prometheus$package` will be encoded on the classpath, and can lead to undefined behaviour.
443[warn] 3 |import cats.effect.IO
444[warn] 4 |import org.http4s.HttpRoutes
445[warn] 5 |import org.http4s.server.Router
446[warn] 6 |import org.typelevel.otel4s.sdk.exporter.prometheus.*
447[warn] 7 |import org.typelevel.otel4s.sdk.metrics.exporter.MetricExporter
448[warn] 8 |def MkPrometheusRoutes(using exporter: MetricExporter.Pull[IO]): HttpRoutes[IO] =
449[warn] 9 | val writerConfig = PrometheusWriter.Config.default
450[warn] 10 | val prometheusRoutes = PrometheusHttpRoutes.routes[IO](exporter, writerConfig)
451[warn] 11 | Router("/metrics" -> prometheusRoutes)
452[warn] |----------------------------------------------------------------------------
453[warn] | Explanation (enabled by `-explain`)
454[warn] |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
455[warn] | Tools may not handle directories whose names differ from their corresponding package names.
456[warn] | For example, `p-q` is encoded as `p$minusq` when written to the file system.
457[warn] |
458[warn] | Package objects derive their names from the file names, so files such as `myfile.test.scala`
459[warn] | or `myfile-test.scala` can produce encoded names for the generated package objects.
460[warn] |
461[warn] | In this case, the name `http.routes.prometheus$package` is encoded as `http$u002Eroutes$u002Eprometheus$package`.
462[warn] ----------------------------------------------------------------------------
463[warn] -- [E222] Syntax Warning: /build/repo/modules/app/src/main/scala/http.routes.scala:2:8
464[warn] 2 |package app
465[warn] |^
466[warn] |The package name `http.routes$package` will be encoded on the classpath, and can lead to undefined behaviour.
467[warn] 3 |import cats.data.NonEmptyList
468[warn] 4 |import cats.effect.{ IO, Resource }
469[warn] 5 |import cats.syntax.all.*
470[warn] 6 |import lila.search.spec.*
471[warn] 7 |import org.http4s.HttpRoutes
472[warn] 8 |import org.typelevel.log4cats.LoggerFactory
473[warn] 9 |import org.typelevel.otel4s.metrics.MeterProvider
474[warn] 10 |import smithy4s.http4s.SimpleRestJsonBuilder
475[warn] 11 |def Routes(
476[warn] 12 | resources: AppResources,
477[warn] 13 | config: HttpServerConfig
478[warn] 14 |)(using LoggerFactory[IO], MeterProvider[IO]): Resource[IO, HttpRoutes[IO]] =
479[warn] 15 | val healthServiceImpl = HealthServiceImpl(resources.esClient)
480[warn] 16 | val searchServiceImpl = SearchServiceImpl(resources.esClient)
481[warn] 17 | val search: Resource[IO, HttpRoutes[IO]] =
482[warn] 18 | SimpleRestJsonBuilder.routes(searchServiceImpl).resource
483[warn] 19 | val health: Resource[IO, HttpRoutes[IO]] =
484[warn] 20 | SimpleRestJsonBuilder.routes(healthServiceImpl).resource
485[warn] 21 | def docs = smithy4s.http4s.swagger.docs[IO](SearchService, HealthService)
486[warn] 22 | val apiRoutes =
487[warn] 23 | NonEmptyList
488[warn] 24 | .of(search, health)
489[warn] 25 | .sequence
490[warn] 26 | .map(_.reduceK)
491[warn] 27 | val allRoutes =
492[warn] 28 | if config.enableDocs then apiRoutes.map(_ <+> docs)
493[warn] 29 | else apiRoutes
494[warn] 30 | allRoutes.evalMap(routes => MkMiddleware(config).map(md => md.apply(routes)))
495[warn] |----------------------------------------------------------------------------
496[warn] | Explanation (enabled by `-explain`)
497[warn] |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
498[warn] | Tools may not handle directories whose names differ from their corresponding package names.
499[warn] | For example, `p-q` is encoded as `p$minusq` when written to the file system.
500[warn] |
501[warn] | Package objects derive their names from the file names, so files such as `myfile.test.scala`
502[warn] | or `myfile-test.scala` can produce encoded names for the generated package objects.
503[warn] |
504[warn] | In this case, the name `http.routes$package` is encoded as `http$u002Eroutes$package`.
505[warn] ----------------------------------------------------------------------------
506[info] done compiling
507[info] [patched file /build/repo/modules/app/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/sbt-buildinfo/BuildInfo.scala]
508[warn] three warnings found
509[info] done compiling
510[info] compiling 22 Scala sources to /build/repo/modules/elastic/target/scala-3.8.1-RC1-bin-20251120-60444cb/classes ...
511[info] done compiling
512[info] compiling 2 Scala sources to /build/repo/modules/app/target/scala-3.8.1-RC1-bin-20251120-60444cb/classes ...
513[info] compiling 1 Scala source to /build/repo/modules/ingestor-core/target/scala-3.8.1-RC1-bin-20251120-60444cb/classes ...
514[info] done compiling
515[info] done compiling
516[info] compiling 4 Scala sources to /build/repo/modules/e2e/target/scala-3.8.1-RC1-bin-20251120-60444cb/test-classes ...
517[info] done compiling
518Starting build for ProjectRef(file:/build/repo/,ingestor-cli) (lila-search-cli)... [7/12]
519Compile 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.1-RC1-bin-20251120-60444cb/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
520[info] compiling 3 Scala sources to /build/repo/modules/ingestor-cli/target/scala-3.8.1-RC1-bin-20251120-60444cb/classes ...
521[warn] -- Warning: /build/repo/modules/ingestor-cli/src/main/scala/cli.scala:102:17 ---
522[warn] 102 | val indexOpt = (
523[warn] | ^
524[warn] |A type argument was inferred to be union type lila.search.Index | Unit
525[warn] |This may indicate a programming error.
526[warn] -- Warning: /build/repo/modules/ingestor-cli/src/main/scala/cli.scala:103:19 ---
527[warn] 103 | singleIndexOpt.orElse(allIndexOpt),
528[warn] | ^^^^^^^^^^^^^^^^^^^^^
529[warn] |A type argument was inferred to be union type lila.search.Index | Unit
530[warn] |This may indicate a programming error.
531[info] [patched file /build/repo/modules/ingestor-cli/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/sbt-buildinfo/BuildInfo.scala]
532[warn] two warnings found
533[info] done compiling
534[info] compiling 1 Scala source to /build/repo/modules/ingestor-cli/target/scala-3.8.1-RC1-bin-20251120-60444cb/classes ...
535[info] done compiling
536[info] compiling 1 Scala source to /build/repo/modules/ingestor-cli/target/scala-3.8.1-RC1-bin-20251120-60444cb/test-classes ...
537[info] done compiling
538Starting build for ProjectRef(file:/build/repo/,app) (lila-search-app)... [8/12]
539Compile 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.1-RC1-bin-20251120-60444cb/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
540Starting build for ProjectRef(file:/build/repo/,ingestor-app) (lila-search-ingestor)... [9/12]
541Compile 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.1-RC1-bin-20251120-60444cb/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
542[info] compiling 2 Scala sources to /build/repo/modules/ingestor-app/target/scala-3.8.1-RC1-bin-20251120-60444cb/classes ...
543[info] [patched file /build/repo/modules/ingestor-app/target/scala-3.8.1-RC1-bin-20251120-60444cb/src_managed/main/sbt-buildinfo/BuildInfo.scala]
544[info] done compiling
545[info] compiling 1 Scala source to /build/repo/modules/ingestor-app/target/scala-3.8.1-RC1-bin-20251120-60444cb/classes ...
546[info] done compiling
547Starting build for ProjectRef(file:/build/repo/,ingestor-core) (ingestor-core)... [10/12]
548Compile 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.1-RC1-bin-20251120-60444cb/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
549[info] compiling 1 Scala source to /build/repo/modules/ingestor-core/target/scala-3.8.1-RC1-bin-20251120-60444cb/test-classes ...
550[info] done compiling
551Starting build for ProjectRef(file:/build/repo/,elastic) (elastic)... [11/12]
552Compile 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.1-RC1-bin-20251120-60444cb/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
553[info] compiling 2 Scala sources to /build/repo/modules/elastic/target/scala-3.8.1-RC1-bin-20251120-60444cb/test-classes ...
554[info] done compiling
555
556************************
557Build summary:
558[{
559 "module": "client",
560 "compile": {"status": "ok", "tookMs": 24648, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
561 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
562 "test-compile": {"status": "ok", "tookMs": 2071, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
563 "test": {"status": "skipped", "tookMs": 0, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
564 "publish": {"status": "skipped", "tookMs": 0},
565 "metadata": {
566 "crossScalaVersions": ["3.7.4"]
567}
568},{
569 "module": "lila-mongo",
570 "compile": {"status": "ok", "tookMs": 5739, "warnings": 2, "errors": 0, "sourceVersion": "3.8"},
571 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
572 "test-compile": {"status": "ok", "tookMs": 255, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
573 "test": {"status": "skipped", "tookMs": 0, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
574 "publish": {"status": "ok", "tookMs": 3},
575 "metadata": {
576 "crossScalaVersions": ["3.7.4"]
577}
578},{
579 "module": "core",
580 "compile": {"status": "ok", "tookMs": 149, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
581 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
582 "test-compile": {"status": "ok", "tookMs": 180, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
583 "test": {"status": "skipped", "tookMs": 0, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
584 "publish": {"status": "skipped", "tookMs": 0},
585 "metadata": {
586 "crossScalaVersions": ["3.7.4"]
587}
588},{
589 "module": "api",
590 "compile": {"status": "ok", "tookMs": 260, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
591 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
592 "test-compile": {"status": "ok", "tookMs": 293, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
593 "test": {"status": "skipped", "tookMs": 0, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
594 "publish": {"status": "skipped", "tookMs": 0},
595 "metadata": {
596 "crossScalaVersions": ["3.7.4"]
597}
598},{
599 "module": "lila-game-export",
600 "compile": {"status": "ok", "tookMs": 1772, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
601 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
602 "test-compile": {"status": "ok", "tookMs": 1570, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
603 "test": {"status": "skipped", "tookMs": 0, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
604 "publish": {"status": "ok", "tookMs": 2},
605 "metadata": {
606 "crossScalaVersions": ["3.7.4"]
607}
608},{
609 "module": "root",
610 "compile": {"status": "ok", "tookMs": 46, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
611 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
612 "test-compile": {"status": "ok", "tookMs": 59, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
613 "test": {"status": "skipped", "tookMs": 0, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
614 "publish": {"status": "ok", "tookMs": 2},
615 "metadata": {
616 "crossScalaVersions": ["3.7.4"]
617}
618},{
619 "module": "e2e",
620 "compile": {"status": "ok", "tookMs": 10502, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
621 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
622 "test-compile": {"status": "ok", "tookMs": 8499, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
623 "test": {"status": "skipped", "tookMs": 0, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
624 "publish": {"status": "ok", "tookMs": 2},
625 "metadata": {
626 "crossScalaVersions": ["3.7.4"]
627}
628},{
629 "module": "lila-search-cli",
630 "compile": {"status": "ok", "tookMs": 1767, "warnings": 2, "errors": 0, "sourceVersion": "3.8"},
631 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
632 "test-compile": {"status": "ok", "tookMs": 1780, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
633 "test": {"status": "skipped", "tookMs": 0, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
634 "publish": {"status": "ok", "tookMs": 2},
635 "metadata": {
636 "crossScalaVersions": ["3.7.4"]
637}
638},{
639 "module": "lila-search-app",
640 "compile": {"status": "ok", "tookMs": 352, "warnings": 3, "errors": 0, "sourceVersion": "3.8"},
641 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
642 "test-compile": {"status": "ok", "tookMs": 407, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
643 "test": {"status": "skipped", "tookMs": 0, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
644 "publish": {"status": "ok", "tookMs": 2},
645 "metadata": {
646 "crossScalaVersions": ["3.7.4"]
647}
648},{
649 "module": "lila-search-ingestor",
650 "compile": {"status": "ok", "tookMs": 1247, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
651 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
652 "test-compile": {"status": "ok", "tookMs": 892, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
653 "test": {"status": "skipped", "tookMs": 0, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
654 "publish": {"status": "ok", "tookMs": 2},
655 "metadata": {
656 "crossScalaVersions": ["3.7.4"]
657}
658},{
659 "module": "ingestor-core",
660 "compile": {"status": "ok", "tookMs": 661, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
661 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
662 "test-compile": {"status": "ok", "tookMs": 1779, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
663 "test": {"status": "skipped", "tookMs": 0, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
664 "publish": {"status": "ok", "tookMs": 2},
665 "metadata": {
666 "crossScalaVersions": ["3.7.4"]
667}
668},{
669 "module": "elastic",
670 "compile": {"status": "ok", "tookMs": 298, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
671 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
672 "test-compile": {"status": "ok", "tookMs": 1483, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
673 "test": {"status": "skipped", "tookMs": 0, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
674 "publish": {"status": "ok", "tookMs": 2},
675 "metadata": {
676 "crossScalaVersions": ["3.7.4"]
677}
678}]
679************************
680[success] Total time: 187 s (0:03:07.0), completed Nov 22, 2025, 5:54:50 PM
681[0JChecking patch project/plugins.sbt...
682Checking patch build.sbt...
683Applied patch project/plugins.sbt cleanly.
684Applied patch build.sbt cleanly.