scalacenter/bloop

bug: deduplicate for cancelled compilations

kasiaMarek opened this issue · 0 comments

Bloop deduplication mechanism seems not take into account a possibility of cancellation.
In a scenario:

  • compile request (1)
  • compile request (2)
  • cancel compile request (1)

compilation requests get deduplicated and the sources aren't fully compiled as result.

Extra context:

In basic test in CancelCompileLspSuite in metals the are three build targets "a", "b", and "c". Two compilation requests are send but the first one is cancelled. Only "a" build target is compiled. Ci trace:

2023.10.02 12:07:45 INFO  time: generated quick build in 85ms
[2693](https://github.com/scalameta/metals/actions/runs/6379271620/job/17311437263?pr=5683#step:4:2694)
2023.10.02 12:07:45 INFO  logging to files /home/runner/work/metals/metals/tests/unit/target/e2e/compile-cancel/basic/.metals/metals.log
[2694](https://github.com/scalameta/metals/actions/runs/6379271620/job/17311437263?pr=5683#step:4:2695)
2023.10.02 12:07:45 INFO  Started: Metals version 0.0.0+1-12b1b47a+20231002-1201-SNAPSHOT in folders '/home/runner/work/metals/metals/tests/unit/target/e2e/compile-cancel/basic' .
[2695](https://github.com/scalameta/metals/actions/runs/6379271620/job/17311437263?pr=5683#step:4:2696)
2023.10.02 12:07:45 INFO  Attempting to connect to the build server...
[2696](https://github.com/scalameta/metals/actions/runs/6379271620/job/17311437263?pr=5683#step:4:2697)
2023.10.02 12:07:45 INFO  tracing is disabled for protocol BSP, to enable tracing of incoming and outgoing JSON messages create an empty file at /home/runner/work/metals/metals/tests/unit/target/e2e/compile-cancel/basic/.metals/bsp.trace.json or /home/runner/.cache/metals/bsp.trace.json
[2697](https://github.com/scalameta/metals/actions/runs/6379271620/job/17311437263?pr=5683#step:4:2698)
2023.10.02 12:07:45 INFO  time: Connected to build server in 82ms
[2698](https://github.com/scalameta/metals/actions/runs/6379271620/job/17311437263?pr=5683#step:4:2699)
2023.10.02 12:07:45 INFO  Connected to Build server: Bloop v1.5.11
[2699](https://github.com/scalameta/metals/actions/runs/6379271620/job/17311437263?pr=5683#step:4:2700)
2023.10.02 12:07:45 INFO  time: indexed workspace in 0.47s
[2700](https://github.com/scalameta/metals/actions/runs/6379271620/job/17311437263?pr=5683#step:4:2701)
2023.10.02 12:07:45 INFO  compiling a (1 scala source)
[2701](https://github.com/scalameta/metals/actions/runs/6379271620/job/17311437263?pr=5683#step:4:2702)
2023.10.02 12:07:46 INFO  tests.TestingServer#executeCommand 
[2702](https://github.com/scalameta/metals/actions/runs/6379271620/job/17311437263?pr=5683#step:4:2703)
2023.10.02 12:07:46 INFO  Executing command [compile-cancel]
[2703](https://github.com/scalameta/metals/actions/runs/6379271620/job/17311437263?pr=5683#step:4:2704)
2023.10.02 12:07:46 INFO  compilation cancelled
[2704](https://github.com/scalameta/metals/actions/runs/6379271620/job/17311437263?pr=5683#step:4:2705)
2023.10.02 12:07:46 INFO  Cancelling compilation on Bloop server
[2705](https://github.com/scalameta/metals/actions/runs/6379271620/job/17311437263?pr=5683#step:4:2706)
2023.10.02 12:07:46 INFO  Deduplicating compilation of a from bsp client 'Metals 0.0.0+1-12b1b47a+20231002-1201-SNAPSHOT' (since 1.54s)
[2706](https://github.com/scalameta/metals/actions/runs/6379271620/job/17311437263?pr=5683#step:4:2707)
2023.10.02 12:07:46 INFO  compiling a (1 scala source)
[2707](https://github.com/scalameta/metals/actions/runs/6379271620/job/17311437263?pr=5683#step:4:2708)
2023.10.02 12:07:46 INFO  time: compiled a in 0.59s