awslabs / amazon-kinesis-producer

Amazon Kinesis Producer Library
Apache License 2.0
397 stars 330 forks source link

Library doesn't compile on OSX #317

Open blacktooth opened 3 years ago

blacktooth commented 3 years ago

I am trying to build the library on OSX and it results in following error,

rotatingCredentials(com.amazonaws.services.kinesis.producer.KinesisProducerTest)  Time elapsed: 0.026 sec  <<< ERROR!
java.lang.RuntimeException: Could not copy native binaries to temp directory /var/folders/xz/nt3s8w352fs28ddb1c67nkv1qyq8g5/T/amazon-kinesis-producer-native-binaries
    at com.amazonaws.services.kinesis.producer.KinesisProducer.extractBinaries(KinesisProducer.java:922)
    at com.amazonaws.services.kinesis.producer.KinesisProducer.<init>(KinesisProducer.java:240)
    at com.amazonaws.services.kinesis.producer.KinesisProducerTest.getProducer(KinesisProducerTest.java:223)
    at com.amazonaws.services.kinesis.producer.KinesisProducerTest.rotatingCredentials(KinesisProducerTest.java:138)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
    at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
    at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Caused by: java.lang.NullPointerException
    at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1792)
    at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1769)
    at org.apache.commons.io.IOUtils.copy(IOUtils.java:1744)
    at com.amazonaws.services.kinesis.producer.HashedFileCopier.copyFileFrom(HashedFileCopier.java:52)
    at com.amazonaws.services.kinesis.producer.KinesisProducer.extractBinaries(KinesisProducer.java:908)
    ... 34 more

Running com.amazonaws.services.kinesis.producer.FileAgeManagerTest
2020-10-16 16:44:31,836 [main] ERROR c.a.s.k.producer.FileAgeManager [NONE] - File 'null' doesn't exist or has been removed. This could cause problems with the native components.  It's recommended to restart the JVM.
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.056 sec

Results :

Failed tests:   multipleInstances(com.amazonaws.services.kinesis.producer.KinesisProducerTest)

Tests in error:
  differentCredsForRecordsAndMetrics(com.amazonaws.services.kinesis.producer.KinesisProducerTest): Could not copy native binaries to temp directory /var/folders/xz/nt3s8w352fs28ddb1c67nkv1qyq8g5/T/amazon-kinesis-producer-native-binaries
  rotatingCredentials(com.amazonaws.services.kinesis.producer.KinesisProducerTest): Could not copy native binaries to temp directory /var/folders/xz/nt3s8w352fs28ddb1c67nkv1qyq8g5/T/amazon-kinesis-producer-native-binaries

Tests run: 18, Failures: 1, Errors: 2, Skipped: 0

The native binaries are getting built as expected but the Java source is failing to build.

blacktooth commented 3 years ago

Workaround is to copy the native binaries to the directory java/amazon-kinesis-producer/src/main/resources/amazon-kinesis-producer-native-binaries

The native binaries can be unjarred from https://search.maven.org/search?q=a:amazon-kinesis-producer