Skip to content

Commit

Permalink
chore(java11): Compile with Java 11 (but targeting Java 8) (spinnaker…
Browse files Browse the repository at this point in the history
…#630)

Additional differences:

`UserRoleSyncer` was using `stream.map().count()` to run an operation on each element and then return the number of elements in the stream. But this doesn't work in Java 11 because "An implementation may choose to not execute the stream pipeline (either sequentially or in parallel) if it is capable of computing the count directly from the stream source." The Java 11 docs (unlike the Java 8 docs) include an explicit example of this exact thing we're doing and why it doesn't work.

Fortunately we had to test to catch this. I wonder where else we're doing this... :/
  • Loading branch information
plumpy committed Apr 3, 2020
1 parent 27e720b commit b47aef4
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 12 deletions.
7 changes: 6 additions & 1 deletion .github/workflows/build.yml
Expand Up @@ -13,9 +13,14 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# Install Java 8 for cross-compilation support. Setting it up before
# Java 11 means it comes later in $PATH (because of how setup-java works)
- uses: actions/setup-java@v1
with:
java-version: 8
- uses: actions/setup-java@v1
with:
java-version: 11
- uses: actions/cache@v1
with:
path: ~/.gradle
Expand All @@ -27,4 +32,4 @@ jobs:
BINTRAY_USER: ${{ secrets.BINTRAY_USER }}
BINTRAY_API_KEY: ${{ secrets.BINTRAY_API_KEY }}
GRADLE_OPTS: -Xmx6g -Xms6g -Dorg.gradle.daemon=false
run: ./gradlew -PenablePublishing=true -PbintrayUser="${BINTRAY_USER}" -PbintrayKey="${BINTRAY_API_KEY}" build snapshot --stacktrace
run: ./gradlew -PenableCrossCompilerPlugin=true -PenablePublishing=true -PbintrayUser="${BINTRAY_USER}" -PbintrayKey="${BINTRAY_API_KEY}" build snapshot --stacktrace
7 changes: 6 additions & 1 deletion .github/workflows/pr.yml
Expand Up @@ -7,9 +7,14 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# Install Java 8 for cross-compilation support. Setting it up before
# Java 11 means it comes later in $PATH (because of how setup-java works)
- uses: actions/setup-java@v1
with:
java-version: 8
- uses: actions/setup-java@v1
with:
java-version: 11
- uses: actions/cache@v1
with:
path: ~/.gradle
Expand All @@ -19,4 +24,4 @@ jobs:
- name: Build
env:
GRADLE_OPTS: -Xmx6g -Xms6g -Dorg.gradle.daemon=false
run: ./gradlew build
run: ./gradlew -PenableCrossCompilerPlugin=true build
9 changes: 7 additions & 2 deletions .github/workflows/release.yml
Expand Up @@ -12,9 +12,14 @@ jobs:
steps:
- uses: actions/checkout@v2
- run: git fetch --prune --unshallow
# Install Java 8 for cross-compilation support. Setting it up before
# Java 11 means it comes later in $PATH (because of how setup-java works)
- uses: actions/setup-java@v1
with:
java-version: 8
- uses: actions/setup-java@v1
with:
java-version: 11
- uses: actions/cache@v1
with:
path: ~/.gradle
Expand All @@ -37,15 +42,15 @@ jobs:
BINTRAY_API_KEY: ${{ secrets.BINTRAY_API_KEY }}
GRADLE_OPTS: -Xmx6g -Xms6g -Dorg.gradle.daemon=false
run: |
./gradlew -PenablePublishing=true --info -Prelease.disableGitChecks=true -Prelease.useLastTag=true -PbintrayUser="${BINTRAY_USER}" -PbintrayKey="${BINTRAY_API_KEY}" candidate
./gradlew -PenableCrossCompilerPlugin=true -PenablePublishing=true --info -Prelease.disableGitChecks=true -Prelease.useLastTag=true -PbintrayUser="${BINTRAY_USER}" -PbintrayKey="${BINTRAY_API_KEY}" candidate
- name: Release build
if: steps.release_info.outputs.IS_CANDIDATE == 'false'
env:
BINTRAY_USER: ${{ secrets.BINTRAY_USER }}
BINTRAY_API_KEY: ${{ secrets.BINTRAY_API_KEY }}
GRADLE_OPTS: -Xmx6g -Xms6g -Dorg.gradle.daemon=false
run: |
./gradlew -PenablePublishing=true --info -Prelease.disableGitChecks=true -Prelease.useLastTag=true -PbintrayUser="${BINTRAY_USER}" -PbintrayKey="${BINTRAY_API_KEY}" final
./gradlew -PenableCrossCompilerPlugin=true -PenablePublishing=true --info -Prelease.disableGitChecks=true -Prelease.useLastTag=true -PbintrayUser="${BINTRAY_USER}" -PbintrayKey="${BINTRAY_API_KEY}" final
- name: Create release
if: steps.release_info.outputs.SKIP_RELEASE == 'false'
uses: actions/create-release@v1
Expand Down
12 changes: 9 additions & 3 deletions Dockerfile.compile
@@ -1,5 +1,11 @@
FROM openjdk:8
FROM ubuntu:bionic
RUN apt-get update && apt-get install -y \
openjdk-8-jdk \
openjdk-11-jdk \
&& rm -rf /var/lib/apt/lists/*
MAINTAINER sig-platform@spinnaker.io
ENV JAVA_HOME /usr/lib/jvm/java-11-openjdk-amd64
ENV JDK_18 /usr/lib/jvm/java-8-openjdk-amd64
ENV GRADLE_USER_HOME /workspace/.gradle
ENV GRADLE_OPTS -Xmx2048m
CMD ./gradlew --no-daemon fiat-web:installDist -x test
ENV GRADLE_OPTS -Xmx4g
CMD ./gradlew --no-daemon -PenableCrossCompilerPlugin=true fiat-web:installDist -x test
Expand Up @@ -36,6 +36,7 @@
import com.netflix.spinnaker.kork.lock.LockManager;
import java.time.Duration;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -273,10 +274,11 @@ public long updateUserPermissions(Map<String, UserPermission> permissionsById) {
long count =
timeIt(
"syncUsers",
() ->
permissionsResolver.resolve(extUsers).values().stream()
.map(permission -> permissionsRepository.put(permission))
.count());
() -> {
Collection<UserPermission> values = permissionsResolver.resolve(extUsers).values();
values.forEach(permissionsRepository::put);
return values.size();
});
log.info("Synced {} non-anonymous user roles.", count);
return count;
}
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
@@ -1,6 +1,6 @@
#Tue Mar 31 21:48:04 UTC 2020
enablePublishing=false
spinnakerGradleVersion=7.7.0
spinnakerGradleVersion=7.9.0
korkVersion=7.31.1
org.gradle.parallel=true
includeProviders=file,github,google-groups,ldap

0 comments on commit b47aef4

Please sign in to comment.