Skip to content

Scala 2.12: incremental compilation broken when worker is enabled #305

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
gkk-stripe opened this issue Oct 12, 2017 · 1 comment
Closed

Comments

@gkk-stripe
Copy link
Contributor

Scala 2.12.3 (and earlier versions of 2.12) breaks bazel's incremental compilation when worker is enabled.
This was discovered and troubleshooted here: #251 (comment)

I'm creating this issue to keep track of it and to have a reference I can use in code comments.

The incremental compilation is broken due to a bug is in the scalac's classpath caching that can be disabled with -YdisableFlatCpCaching passed to the compiler. The scala/scala#6064 has a fix for the caching logic. It's not part of an official release, though. 2.12.4 is planned to be out very soon: https://github.com/scala/scala/milestones

I verified that the fix is working so we need to wait for the 2.12.4 release to have this fixed.

gkk-stripe added a commit to gkk-stripe/rules_scala that referenced this issue Oct 12, 2017
Append the `YdisableFlatCpCaching` compiler option by default as a
workaround to bazel-contrib#305
johnynek pushed a commit that referenced this issue Oct 14, 2017
* Scala 2.12 updates

Bump dependencies to versions that support Scala 2.12.

* Fix incompatible scrooge api change.

They swapped the logger interface and now there's a different went to
silence the logging.

* Add scalactic as a transitive dep of scalatest

Newer versions of scalatest have scalactic as a dependency. Let bazel
know about it and add its a transitive dep.

* Add a missing dependency on util_core from scrooge rule

Add a missing dependency on Twitter's util_core from scrooge rule

* Set -source 1.8 and -target 1.8 javac options

This makes the code to compile again on my laptop.

* Remove dropped args when calling java_common.create_provider

The 031e73c restructured
java_commmon rule and dropped both `transitive_compile_time_jars`
and `transitive_runtime_jars` from that rule. Let's sync scala.bzl
with that change.

* Upgrade to Scala 2.12.3

* Switch to Scala nightly build with classpath caching fix

Switch to a recent nightly build that has a fix for the flat classpath
caching bug that is breaking bazel's incremental compilation when worker
is enabled.

See #251 (comment)
for the details of the bug.

* Crash jmh with an explanation why it doesn't work

Link to an issue explaining the jmh failure is related to Java 8 and not
directly caused by the Scala 2.12.

* Upgrade the hash of the nightly build

For mysterious reasons, the hash has changed for a build that should be
unique. A sign that relying on nightly builds is risky. Yolo for now,
though.

* Revert "Switch to Scala nightly build with classpath caching fix"

This reverts commit 55fd807.

Switch back to 2.12.3 until 2.12.4 is released. This will make the testing
easier for projects that rely on compiler plugins.

* Disable jmh test

See #295 for why it's
failing.

* Switch back to bazel maven mirror

Not sure why I switched to the main one in the first place.

* Revert "Switch back to bazel maven mirror"

This reverts commit 4e266fc.

It turns out, the bazel mirror is not great for us because
it misses some artifacts:

ERROR: /Users/gkk/stripe/rules_scala/twitter_scrooge/twitter_scrooge.bzl:46:3: no such package '@util_core//jar': Failed to fetch Maven dependency: Could not transfer artifact com.twitter:util-core_2.12:jar:6.45.0 from/to util_core (http://mirror.bazel.build/repo1.maven.org/maven2/): Forbidden (403) and referenced by '//external:io_bazel_rules_scala/dependency/thrift/util_core'.

* Append YdisableFlatCpCaching to scalacopts by default

Append the `YdisableFlatCpCaching` compiler option by default as a
workaround to #305

* Disable the jmh test in test_run.sh

The target is already commented out in BUILD file, but test_run.sh still
tries to run it.
gkk-stripe added a commit to gkk-stripe/rules_scala that referenced this issue Oct 17, 2017
Remove the YdisableFlatCpCaching workaround. The bug has been fixed
in Scala 2.12.

Fixes bazel-contrib#305
gkk-stripe added a commit to gkk-stripe/rules_scala that referenced this issue Oct 18, 2017
Remove the YdisableFlatCpCaching workaround. The bug has been fixed
in Scala 2.12.

Fixes bazel-contrib#305
gkk-stripe added a commit to gkk-stripe/rules_scala that referenced this issue Oct 18, 2017
The rules_scala ci detected that 2.12.4 doesn't fix bazel-contrib#305 so we keep the
workaround for now.
nmurthy pushed a commit to zenreach/rules_scala that referenced this issue Dec 18, 2017
* Scala 2.12 updates

Bump dependencies to versions that support Scala 2.12.

* Fix incompatible scrooge api change.

They swapped the logger interface and now there's a different went to
silence the logging.

* Add scalactic as a transitive dep of scalatest

Newer versions of scalatest have scalactic as a dependency. Let bazel
know about it and add its a transitive dep.

* Add a missing dependency on util_core from scrooge rule

Add a missing dependency on Twitter's util_core from scrooge rule

* Set -source 1.8 and -target 1.8 javac options

This makes the code to compile again on my laptop.

* Remove dropped args when calling java_common.create_provider

The 031e73c restructured
java_commmon rule and dropped both `transitive_compile_time_jars`
and `transitive_runtime_jars` from that rule. Let's sync scala.bzl
with that change.

* Upgrade to Scala 2.12.3

* Switch to Scala nightly build with classpath caching fix

Switch to a recent nightly build that has a fix for the flat classpath
caching bug that is breaking bazel's incremental compilation when worker
is enabled.

See bazel-contrib#251 (comment)
for the details of the bug.

* Crash jmh with an explanation why it doesn't work

Link to an issue explaining the jmh failure is related to Java 8 and not
directly caused by the Scala 2.12.

* Upgrade the hash of the nightly build

For mysterious reasons, the hash has changed for a build that should be
unique. A sign that relying on nightly builds is risky. Yolo for now,
though.

* Revert "Switch to Scala nightly build with classpath caching fix"

This reverts commit 55fd807.

Switch back to 2.12.3 until 2.12.4 is released. This will make the testing
easier for projects that rely on compiler plugins.

* Disable jmh test

See bazel-contrib#295 for why it's
failing.

* Switch back to bazel maven mirror

Not sure why I switched to the main one in the first place.

* Revert "Switch back to bazel maven mirror"

This reverts commit 4e266fc.

It turns out, the bazel mirror is not great for us because
it misses some artifacts:

ERROR: /Users/gkk/stripe/rules_scala/twitter_scrooge/twitter_scrooge.bzl:46:3: no such package '@util_core//jar': Failed to fetch Maven dependency: Could not transfer artifact com.twitter:util-core_2.12:jar:6.45.0 from/to util_core (http://mirror.bazel.build/repo1.maven.org/maven2/): Forbidden (403) and referenced by '//external:io_bazel_rules_scala/dependency/thrift/util_core'.

* Append YdisableFlatCpCaching to scalacopts by default

Append the `YdisableFlatCpCaching` compiler option by default as a
workaround to bazel-contrib#305

* Disable the jmh test in test_run.sh

The target is already commented out in BUILD file, but test_run.sh still
tries to run it.
nmurthy pushed a commit to zenreach/rules_scala that referenced this issue Dec 18, 2017
The rules_scala ci detected that 2.12.4 doesn't fix bazel-contrib#305 so we keep the
workaround for now.
hmemcpy pushed a commit to wix-incubator/rules_scala that referenced this issue Jan 28, 2018
* Scala 2.12 updates

Bump dependencies to versions that support Scala 2.12.

* Fix incompatible scrooge api change.

They swapped the logger interface and now there's a different went to
silence the logging.

* Add scalactic as a transitive dep of scalatest

Newer versions of scalatest have scalactic as a dependency. Let bazel
know about it and add its a transitive dep.

* Add a missing dependency on util_core from scrooge rule

Add a missing dependency on Twitter's util_core from scrooge rule

* Set -source 1.8 and -target 1.8 javac options

This makes the code to compile again on my laptop.

* Remove dropped args when calling java_common.create_provider

The 031e73c restructured
java_commmon rule and dropped both `transitive_compile_time_jars`
and `transitive_runtime_jars` from that rule. Let's sync scala.bzl
with that change.

* Upgrade to Scala 2.12.3

* Switch to Scala nightly build with classpath caching fix

Switch to a recent nightly build that has a fix for the flat classpath
caching bug that is breaking bazel's incremental compilation when worker
is enabled.

See bazel-contrib#251 (comment)
for the details of the bug.

* Crash jmh with an explanation why it doesn't work

Link to an issue explaining the jmh failure is related to Java 8 and not
directly caused by the Scala 2.12.

* Upgrade the hash of the nightly build

For mysterious reasons, the hash has changed for a build that should be
unique. A sign that relying on nightly builds is risky. Yolo for now,
though.

* Revert "Switch to Scala nightly build with classpath caching fix"

This reverts commit 55fd807.

Switch back to 2.12.3 until 2.12.4 is released. This will make the testing
easier for projects that rely on compiler plugins.

* Disable jmh test

See bazel-contrib#295 for why it's
failing.

* Switch back to bazel maven mirror

Not sure why I switched to the main one in the first place.

* Revert "Switch back to bazel maven mirror"

This reverts commit 4e266fc.

It turns out, the bazel mirror is not great for us because
it misses some artifacts:

ERROR: /Users/gkk/stripe/rules_scala/twitter_scrooge/twitter_scrooge.bzl:46:3: no such package '@util_core//jar': Failed to fetch Maven dependency: Could not transfer artifact com.twitter:util-core_2.12:jar:6.45.0 from/to util_core (http://mirror.bazel.build/repo1.maven.org/maven2/): Forbidden (403) and referenced by '//external:io_bazel_rules_scala/dependency/thrift/util_core'.

* Append YdisableFlatCpCaching to scalacopts by default

Append the `YdisableFlatCpCaching` compiler option by default as a
workaround to bazel-contrib#305

* Disable the jmh test in test_run.sh

The target is already commented out in BUILD file, but test_run.sh still
tries to run it.
hmemcpy pushed a commit to wix-incubator/rules_scala that referenced this issue Jan 28, 2018
The rules_scala ci detected that 2.12.4 doesn't fix bazel-contrib#305 so we keep the
workaround for now.
hmemcpy pushed a commit to wix-incubator/rules_scala that referenced this issue Jan 28, 2018
* Scala 2.12 updates

Bump dependencies to versions that support Scala 2.12.

* Fix incompatible scrooge api change.

They swapped the logger interface and now there's a different went to
silence the logging.

* Add scalactic as a transitive dep of scalatest

Newer versions of scalatest have scalactic as a dependency. Let bazel
know about it and add its a transitive dep.

* Add a missing dependency on util_core from scrooge rule

Add a missing dependency on Twitter's util_core from scrooge rule

* Set -source 1.8 and -target 1.8 javac options

This makes the code to compile again on my laptop.

* Remove dropped args when calling java_common.create_provider

The 031e73c restructured
java_commmon rule and dropped both `transitive_compile_time_jars`
and `transitive_runtime_jars` from that rule. Let's sync scala.bzl
with that change.

* Upgrade to Scala 2.12.3

* Switch to Scala nightly build with classpath caching fix

Switch to a recent nightly build that has a fix for the flat classpath
caching bug that is breaking bazel's incremental compilation when worker
is enabled.

See bazel-contrib#251 (comment)
for the details of the bug.

* Crash jmh with an explanation why it doesn't work

Link to an issue explaining the jmh failure is related to Java 8 and not
directly caused by the Scala 2.12.

* Upgrade the hash of the nightly build

For mysterious reasons, the hash has changed for a build that should be
unique. A sign that relying on nightly builds is risky. Yolo for now,
though.

* Revert "Switch to Scala nightly build with classpath caching fix"

This reverts commit 55fd807.

Switch back to 2.12.3 until 2.12.4 is released. This will make the testing
easier for projects that rely on compiler plugins.

* Disable jmh test

See bazel-contrib#295 for why it's
failing.

* Switch back to bazel maven mirror

Not sure why I switched to the main one in the first place.

* Revert "Switch back to bazel maven mirror"

This reverts commit 4e266fc.

It turns out, the bazel mirror is not great for us because
it misses some artifacts:

ERROR: /Users/gkk/stripe/rules_scala/twitter_scrooge/twitter_scrooge.bzl:46:3: no such package '@util_core//jar': Failed to fetch Maven dependency: Could not transfer artifact com.twitter:util-core_2.12:jar:6.45.0 from/to util_core (http://mirror.bazel.build/repo1.maven.org/maven2/): Forbidden (403) and referenced by '//external:io_bazel_rules_scala/dependency/thrift/util_core'.

* Append YdisableFlatCpCaching to scalacopts by default

Append the `YdisableFlatCpCaching` compiler option by default as a
workaround to bazel-contrib#305

* Disable the jmh test in test_run.sh

The target is already commented out in BUILD file, but test_run.sh still
tries to run it.
hmemcpy pushed a commit to wix-incubator/rules_scala that referenced this issue Jan 28, 2018
The rules_scala ci detected that 2.12.4 doesn't fix bazel-contrib#305 so we keep the
workaround for now.
gkk-stripe added a commit to gkk-stripe/rules_scala that referenced this issue Apr 3, 2018
* Scala 2.12 updates

Bump dependencies to versions that support Scala 2.12.

* Fix incompatible scrooge api change.

They swapped the logger interface and now there's a different went to
silence the logging.

* Add scalactic as a transitive dep of scalatest

Newer versions of scalatest have scalactic as a dependency. Let bazel
know about it and add its a transitive dep.

* Add a missing dependency on util_core from scrooge rule

Add a missing dependency on Twitter's util_core from scrooge rule

Switch to a recent nightly build that has a fix for the flat classpath
caching bug that is breaking bazel's incremental compilation when worker
is enabled.

See bazel-contrib#251 (comment)
for the details of the bug.
* Disable jmh test

See bazel-contrib#295 for why it's
failing.

* Append YdisableFlatCpCaching to scalacopts by default

Append the `YdisableFlatCpCaching` compiler option by default as a
workaround to bazel-contrib#305
gkk-stripe added a commit to gkk-stripe/rules_scala that referenced this issue Apr 3, 2018
* Scala 2.12 updates

Bump dependencies to versions that support Scala 2.12.

* Fix incompatible scrooge api change.

They swapped the logger interface and now there's a different went to
silence the logging.

* Add scalactic as a transitive dep of scalatest

Newer versions of scalatest have scalactic as a dependency. Let bazel
know about it and add its a transitive dep.

* Add a missing dependency on util_core from scrooge rule

Add a missing dependency on Twitter's util_core from scrooge rule

Switch to a recent nightly build that has a fix for the flat classpath
caching bug that is breaking bazel's incremental compilation when worker
is enabled.

See bazel-contrib#251 (comment)
for the details of the bug.
* Disable jmh test

See bazel-contrib#295 for why it's
failing.

* Append YdisableFlatCpCaching to scalacopts by default

Append the `YdisableFlatCpCaching` compiler option by default as a
workaround to bazel-contrib#305
natansil pushed a commit to wix-incubator/rules_scala that referenced this issue Apr 15, 2018
* Scala 2.12 updates

Bump dependencies to versions that support Scala 2.12.

* Fix incompatible scrooge api change.

They swapped the logger interface and now there's a different went to
silence the logging.

* Add scalactic as a transitive dep of scalatest

Newer versions of scalatest have scalactic as a dependency. Let bazel
know about it and add its a transitive dep.

* Add a missing dependency on util_core from scrooge rule

Add a missing dependency on Twitter's util_core from scrooge rule

Switch to a recent nightly build that has a fix for the flat classpath
caching bug that is breaking bazel's incremental compilation when worker
is enabled.

See bazel-contrib#251 (comment)
for the details of the bug.
* Disable jmh test

See bazel-contrib#295 for why it's
failing.

* Append YdisableFlatCpCaching to scalacopts by default

Append the `YdisableFlatCpCaching` compiler option by default as a
workaround to bazel-contrib#305
gkk-stripe added a commit to gkk-stripe/rules_scala that referenced this issue Apr 18, 2018
* Scala 2.12 updates

Bump dependencies to versions that support Scala 2.12.

* Fix incompatible scrooge api change.

They swapped the logger interface and now there's a different went to
silence the logging.

* Add scalactic as a transitive dep of scalatest

Newer versions of scalatest have scalactic as a dependency. Let bazel
know about it and add its a transitive dep.

* Add a missing dependency on util_core from scrooge rule

Add a missing dependency on Twitter's util_core from scrooge rule

Switch to a recent nightly build that has a fix for the flat classpath
caching bug that is breaking bazel's incremental compilation when worker
is enabled.

See bazel-contrib#251 (comment)
for the details of the bug.
* Disable jmh test

See bazel-contrib#295 for why it's
failing.

* Append YdisableFlatCpCaching to scalacopts by default

Append the `YdisableFlatCpCaching` compiler option by default as a
workaround to bazel-contrib#305
natansil pushed a commit to wix-incubator/rules_scala that referenced this issue May 8, 2018
* Scala 2.12 updates

Bump dependencies to versions that support Scala 2.12.

* Fix incompatible scrooge api change.

They swapped the logger interface and now there's a different went to
silence the logging.

* Add scalactic as a transitive dep of scalatest

Newer versions of scalatest have scalactic as a dependency. Let bazel
know about it and add its a transitive dep.

* Add a missing dependency on util_core from scrooge rule

Add a missing dependency on Twitter's util_core from scrooge rule

Switch to a recent nightly build that has a fix for the flat classpath
caching bug that is breaking bazel's incremental compilation when worker
is enabled.

See bazel-contrib#251 (comment)
for the details of the bug.
* Disable jmh test

See bazel-contrib#295 for why it's
failing.

* Append YdisableFlatCpCaching to scalacopts by default

Append the `YdisableFlatCpCaching` compiler option by default as a
workaround to bazel-contrib#305
ittaiz pushed a commit to wix-incubator/rules_scala that referenced this issue May 20, 2018
* Scala 2.12 updates

Bump dependencies to versions that support Scala 2.12.

* Fix incompatible scrooge api change.

They swapped the logger interface and now there's a different went to
silence the logging.

* Add scalactic as a transitive dep of scalatest

Newer versions of scalatest have scalactic as a dependency. Let bazel
know about it and add its a transitive dep.

* Add a missing dependency on util_core from scrooge rule

Add a missing dependency on Twitter's util_core from scrooge rule

Switch to a recent nightly build that has a fix for the flat classpath
caching bug that is breaking bazel's incremental compilation when worker
is enabled.

See bazel-contrib#251 (comment)
for the details of the bug.
* Disable jmh test

See bazel-contrib#295 for why it's
failing.

* Append YdisableFlatCpCaching to scalacopts by default

Append the `YdisableFlatCpCaching` compiler option by default as a
workaround to bazel-contrib#305
@ittaiz
Copy link
Contributor

ittaiz commented Jul 1, 2018

@gkk-stripe I remember you saying this issue still exists in 2.12.4, right? Preparing a new 2.12 cherry pick

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants