Skip to content

1.x: add AnimalSniffer to the build process, fix and suppress violations #4092

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

Merged
merged 5 commits into from
Jun 25, 2016

Conversation

akarnokd
Copy link
Member

@akarnokd akarnokd commented Jun 23, 2016

This PR adds the AnimalSniffer plugin to check for Java 6 API violations.

Related issue: #4067.

@akarnokd akarnokd added the Build label Jun 23, 2016
@akarnokd akarnokd added this to the 1.2 milestone Jun 23, 2016
@akarnokd
Copy link
Member Author

@akarnokd
Copy link
Member Author

Flaky tests:

rx.observers.TestSubscriberTest > testOnErrorCrashCountsDownLatch FAILED
    org.junit.runners.model.TestTimedOutException: test timed out after 1000 milliseconds
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at rx.observers.TestSubscriberTest.testOnErrorCrashCountsDownLatch(TestSubscriberTest.java:595)
rx.plugins.RxJavaPluginsTest > testOnNextValueCallsPlugin FAILED
    java.lang.RuntimeException: java.util.concurrent.TimeoutException
        at rx.observables.BlockingObservable.blockForSingle(BlockingObservable.java:463)
        at rx.observables.BlockingObservable.first(BlockingObservable.java:163)
        at rx.plugins.RxJavaPluginsTest.testOnNextValueCallsPlugin(RxJavaPluginsTest.java:228)
        Caused by:
        java.util.concurrent.TimeoutException
rx.subjects.BehaviorSubjectTest > testUnsubscriptionCase FAILED
    org.junit.runners.model.TestTimedOutException: test timed out after 1000 milliseconds
        at java.lang.ClassLoader.findBootstrapClass(Native Method)
        at java.lang.ClassLoader.findBootstrapClassOrNull(ClassLoader.java:1070)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:414)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:412)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:191)
        at org.mockito.internal.configuration.ClassPathLoader.loadConfiguration(ClassPathLoader.java:68)
        at org.mockito.internal.configuration.GlobalConfiguration.createConfig(GlobalConfiguration.java:38)
        at org.mockito.internal.configuration.GlobalConfiguration.<init>(GlobalConfiguration.java:32)
        at org.mockito.internal.configuration.GlobalConfiguration.validate(GlobalConfiguration.java:47)
        at org.mockito.internal.progress.MockingProgressImpl.validateMostStuff(MockingProgressImpl.java:81)
        at org.mockito.internal.progress.MockingProgressImpl.mockingStarted(MockingProgressImpl.java:116)
        at org.mockito.internal.progress.ThreadSafeMockingProgress.mockingStarted(ThreadSafeMockingProgress.java:72)
        at org.mockito.internal.MockitoCore.mock(MockitoCore.java:60)
        at org.mockito.Mockito.mock(Mockito.java:1285)
        at org.mockito.Mockito.mock(Mockito.java:1163)
        at rx.subjects.BehaviorSubjectTest.testUnsubscriptionCase(BehaviorSubjectTest.java:249)

@akarnokd
Copy link
Member Author

To be merged after #4091 in case there is a conflict.

@codecov-io
Copy link

codecov-io commented Jun 23, 2016

Current coverage is 80.28%

Merging #4092 into 1.x will increase coverage by 0.02%

@@                1.x      #4092   diff @@
==========================================
  Files           259        259          
  Lines         16821      16821          
  Methods           0          0          
  Messages          0          0          
  Branches       2554       2554          
==========================================
+ Hits          13500      13504     +4   
+ Misses         2408       2402     -6   
- Partials        913        915     +2   

Powered by Codecov. Last updated by afe3cb0...7da62c2

@@ -98,6 +98,7 @@ public static void deregisterExecutor(ScheduledExecutorService service) {
}

/** Purges each registered executor and eagerly evicts shutdown executors. */
@SuppressAnimalSniffer // CHM.keySet returns KeySetView in Java 8+; false positive here
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If possible please report an issue back to animalsniffer

@artem-zinnatullin
Copy link
Contributor

Does it really fail the build if you try to use Java7+ APIs?

@akarnokd
Copy link
Member Author

That AssertionError initialization did fail locally, but can't really post a PR that demonstrates failure, right?

@artem-zinnatullin
Copy link
Contributor

Sure sure, I mean have you checked that it really fails build that we perform on CI in case of using Java7+ APIs? (you can execute commands from buildViaTravis.sh locally to check that).

@akarnokd
Copy link
Member Author

@akarnokd
Copy link
Member Author

That's annoying, we seem to get shot down by out-of-memory checkers, maybe due to extensive thread usage? Or we have a leak somewhere.

@artem-zinnatullin
Copy link
Contributor

👍

I see ~similar instability of CI regarding memory usage in other projects I work on, solution I currently stick to is to divide build into separate steps like:

./gradlew --no-daemon clean
./gradlew --no-daemon assemble
./gradlew --no-daemon test
// etc

Either it's leak in Gradle (or some plugin) or CI under load gives us less memory.

@akarnokd akarnokd mentioned this pull request Jun 23, 2016
@ZacSweers
Copy link
Contributor

👍

@akarnokd akarnokd merged commit b21504d into ReactiveX:1.x Jun 25, 2016
@akarnokd akarnokd deleted the AnimalSniffer branch June 25, 2016 06:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants