You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flume.apache.org by "pascal oliva (JIRA)" <ji...@apache.org> on 2014/09/03 12:16:52 UTC

[jira] [Updated] (FLUME-2452) Unit test TestAvroSink.java failed with IBM JDK 1.7

     [ https://issues.apache.org/jira/browse/FLUME-2452?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

pascal oliva updated FLUME-2452:
--------------------------------
    Attachment: FLUME-2452-1.patch

> Unit test TestAvroSink.java failed with IBM JDK 1.7
> ---------------------------------------------------
>
>                 Key: FLUME-2452
>                 URL: https://issues.apache.org/jira/browse/FLUME-2452
>             Project: Flume
>          Issue Type: Bug
>          Components: Sinks+Sources, Test
>    Affects Versions: v1.5.0.1
>         Environment: RHEL 6.5 PPC64 & x86_64
> IBM JDK 1.7.0
>            Reporter: Mickael Olivier
>            Priority: Minor
>              Labels: test
>         Attachments: FLUME-2452-1.patch
>
>
> Running org.apache.flume.sink.TestAvroSink
> Tests run: 15, Failures: 0, Errors: 9, Skipped: 0, Time elapsed: 41.619 sec <<< FAILURE!
> testSslProcessWithTrustStore(org.apache.flume.sink.TestAvroSink)  Time elapsed: 31 sec  <<< ERROR!
> {code:title=Bar.java|borderStyle=solid}
> org.apache.flume.EventDeliveryException: Failed to send events
>         \\at org.apache.flume.sink.AbstractRpcSink.process(AbstractRpcSink.java:392)
>         at org.apache.flume.sink.TestAvroSink.testSslProcessWithTrustStore(TestAvroSink.java:431)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:94)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
>         at java.lang.reflect.Method.invoke(Method.java:619)
>         at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
>         at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
>         at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
>         at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
>         at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
>         at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
>         at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
>         at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
>         at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
>         at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
>         at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
>         at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
>         at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
>         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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:94)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
>         at java.lang.reflect.Method.invoke(Method.java:619)
>         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: org.apache.flume.FlumeException: NettyAvroRpcClient { host: localhost, port: 41414 }: Unexpected exception
>         at org.apache.flume.api.NettyAvroRpcClient.connect(NettyAvroRpcClient.java:184)
>         at org.apache.flume.api.NettyAvroRpcClient.connect(NettyAvroRpcClient.java:118)
>         at org.apache.flume.api.NettyAvroRpcClient.configure(NettyAvroRpcClient.java:624)
>         at org.apache.flume.api.RpcClientFactory.getInstance(RpcClientFactory.java:88)
>         at org.apache.flume.sink.AvroSink.initializeRpcClient(AvroSink.java:127)
>         at org.apache.flume.sink.AbstractRpcSink.createConnection(AbstractRpcSink.java:211)
>         at org.apache.flume.sink.AbstractRpcSink.verifyConnection(AbstractRpcSink.java:272)
>         at org.apache.flume.sink.AbstractRpcSink.process(AbstractRpcSink.java:349)
>         ... 30 more
> Caused by: java.lang.RuntimeException: Cannot create SSL channel
>         at org.apache.flume.api.NettyAvroRpcClient$SSLCompressionChannelFactory.newChannel(NettyAvroRpcClient.java:747)
>         at org.apache.flume.api.NettyAvroRpcClient$SSLCompressionChannelFactory.newChannel(NettyAvroRpcClient.java:663)
>         at org.jboss.netty.bootstrap.ClientBootstrap.connect(ClientBootstrap.java:212)
>         at org.jboss.netty.bootstrap.ClientBootstrap.connect(ClientBootstrap.java:182)
>         at org.apache.avro.ipc.NettyTransceiver.getChannel(NettyTransceiver.java:253)
>         at org.apache.avro.ipc.NettyTransceiver.<init>(NettyTransceiver.java:203)
>         at org.apache.avro.ipc.NettyTransceiver.<init>(NettyTransceiver.java:152)
>         at org.apache.flume.api.NettyAvroRpcClient.connect(NettyAvroRpcClient.java:164)
>         ... 37 more
> Caused by: java.security.NoSuchAlgorithmException: SunX509 TrustManagerFactory not available
>         at sun.security.jca.GetInstance.getInstance(GetInstance.java:171)
>         at javax.net.ssl.TrustManagerFactory.getInstance(TrustManagerFactory.java:6)
>         at org.apache.flume.api.NettyAvroRpcClient$SSLCompressionChannelFactory.newChannel(NettyAvroRpcClient.java:727)
>         ... 44 more
> {code}
> In file ./flume-ng-sdk/src/main/java/org/apache/flum/api/NettyAvroRpcClient.java, the TrustManagerFactory is de facto SunX509
> TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
> I think there should be a change, like the one present in the ./flume-ng-core/src/test/java/org/apache/flume/sink/TestAvroSink.java file :
> {code:title=Bar.java|borderStyle=solid}
> private String getAlgorithm()
> {
>       String algorithm = Security.getProperty(
>           "ssl.KeyManagerFactory.algorithm");
>       if (algorithm == null) {
>         algorithm = "SunX509";
>       }
>       return algorithm;
> }
> {code}
> Even though it gets rid of the error "SunX509 TrustManagerFactory not available" when applied, I then get another error in place of it :
> {code:title=Bar.java|borderStyle=solid}
> org.apache.flume.EventDeliveryException: Failed to send events
>         at org.apache.flume.sink.AbstractRpcSink.process(AbstractRpcSink.java:392)
>         at org.apache.flume.sink.TestAvroSink.testSslProcessWithTrustStore(TestAvroSink.java:431)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:94)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
>         at java.lang.reflect.Method.invoke(Method.java:619)
>         at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
>         at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
>         at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
>         at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
>         at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
>         at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
>         at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
>         at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
>         at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
>         at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
>         at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
>         at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
>         at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
>         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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:94)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
>         at java.lang.reflect.Method.invoke(Method.java:619)
>         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: org.apache.flume.EventDeliveryException: NettyAvroRpcClient { host: localhost, port: 41414 }: Failed to send batch
>         at org.apache.flume.api.NettyAvroRpcClient.appendBatch(NettyAvroRpcClient.java:312)
>         at org.apache.flume.sink.AbstractRpcSink.process(AbstractRpcSink.java:376)
>         ... 30 more
> Caused by: org.apache.flume.EventDeliveryException: NettyAvroRpcClient { host: localhost, port: 41414 }: Exception thrown from remote handler
>         at org.apache.flume.api.NettyAvroRpcClient.waitForStatusOK(NettyAvroRpcClient.java:394)
>         at org.apache.flume.api.NettyAvroRpcClient.appendBatch(NettyAvroRpcClient.java:371)
>         at org.apache.flume.api.NettyAvroRpcClient.appendBatch(NettyAvroRpcClient.java:300)
>         ... 31 more
> Caused by: java.util.concurrent.ExecutionException: javax.net.ssl.SSLHandshakeException: General SSLEngine problem
>         at org.apache.avro.ipc.CallFuture.get(CallFuture.java:128)
>         at org.apache.flume.api.NettyAvroRpcClient.waitForStatusOK(NettyAvroRpcClient.java:386)
>         ... 33 more
> Caused by: javax.net.ssl.SSLHandshakeException: General SSLEngine problem
>         at com.ibm.jsse2.ab.y(ab.java:364)
>         at com.ibm.jsse2.nc.b(nc.java:461)
>         at com.ibm.jsse2.nc.a(nc.java:283)
>         at com.ibm.jsse2.nc.unwrap(nc.java:333)
>         at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:26)
>         at org.jboss.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1118)
>         at org.jboss.netty.handler.ssl.SslHandler.decode(SslHandler.java:814)
>         at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:422)
>         at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303)
>         at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
>         at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
>         at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:84)
>         at org.jboss.netty.channel.socket.nio.AbstractNioWorker.processSelectedKeys(AbstractNioWorker.java:471)
>         at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:332)
>         at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:35)
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1176)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
>         at java.lang.Thread.run(Thread.java:853)
> Caused by: javax.net.ssl.SSLHandshakeException: General SSLEngine problem
>         at com.ibm.jsse2.j.a(j.java:4)
>         at com.ibm.jsse2.nc.a(nc.java:524)
>         at com.ibm.jsse2.ab.a(ab.java:166)
>         at com.ibm.jsse2.ab.a(ab.java:534)
>         at com.ibm.jsse2.bb.a(bb.java:587)
>         at com.ibm.jsse2.bb.a(bb.java:472)
>         at com.ibm.jsse2.ab.r(ab.java:489)
>         at com.ibm.jsse2.ab$1.a(ab$1.java:3)
>         at com.ibm.jsse2.ab$1.run(ab$1.java:1)
>         at java.security.AccessController.doPrivileged(AccessController.java:366)
>         at com.ibm.jsse2.ab$c_.run(ab$c_.java:11)
>         at org.jboss.netty.handler.ssl.SslHandler$2.run(SslHandler.java:1258)
>         at org.jboss.netty.handler.ssl.ImmediateExecutor.execute(ImmediateExecutor.java:31)
>         at org.jboss.netty.handler.ssl.SslHandler.runDelegatedTasks(SslHandler.java:1255)
>         at org.jboss.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1140)
>         ... 12 more
> Caused by: com.ibm.jsse2.util.j: Certificate expired
>         at com.ibm.jsse2.util.i.b(i.java:175)
>         at com.ibm.jsse2.util.g.a(g.java:10)
>         at com.ibm.jsse2.yc.a(yc.java:141)
>         at com.ibm.jsse2.yc.a(yc.java:124)
>         at com.ibm.jsse2.yc.checkServerTrusted(yc.java:43)
>         at com.ibm.jsse2.bb.a(bb.java:231)
>         ... 22 more
> {code}
> I do not understand this "certificate expired" exception.
> In addition, others tests from TestAvroSink are failing because they try to bind to the same port this test was bind on, leading to "Failed to bind to: 127.0.0.1:41414" message



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)