Skip to content

Performance regression since coursier 2.1.17 #3190

@xerial

Description

@xerial

sbt 1.10.6, which uses coursier 2.1.19 sbt/sbt#7920, has performance regression in the update task, as reported in sbt/sbt#7945

In sbt 1.10.5 with coursier 2.1.14 (1 second):

$ gh repo clone wvlet/wvlet
$ cd wvlet
# Edit project/build.properties to use sbt 1.10.5
$ ./sbt 
sbt:wvlet> runner/update
[success] Total time: 1 s, completed Dec 13, 2024, 11:08:53 AM

In sbt 1.10.6 with coursier 2.1.19 (59 seconds):

# Edit project/build.properties to use sbt 1.10.6
sbt:wvlet> runner/update
[success] Total time: 59 s, completed Dec 13, 2024, 11:12:14 AM
-- The second run still takes longer time than sbt 1.10.5
sbt:wvlet> runner/update
[success] Total time: 6 s, completed Dec 13, 2024, 11:13:36 AM

Problem

Resolving some of the Java dependencies (Trino -> Apache Hadoop related dependencies?) in this build.sbt takes quite a long time. It was 1 second in sbt 1.10.5, but sbt 1.10.6 requires almost 1 minute:
https://github.com/wvlet/wvlet/blob/2987497fbc906149bb77c2a77d600b7f6270e2e9/build.sbt#L338-L355

Even after the first update run, there is still significant overhead.

This slowness can be reproduced with cs resolve command:

$ cs version
2.1.21
$ time cs resolve -q io.trino:trino-hive:467
... 
cs resolve -q io.trino:trino-hive:467  24.91s user 0.56s system 100% cpu 25.341 total

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions