You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flume.apache.org by "Mickael Olivier (JIRA)" <ji...@apache.org> on 2014/08/28 16:54:08 UTC

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

Mickael Olivier created FLUME-2452:
--------------------------------------

             Summary: 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


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!
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

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 :

private String getAlgorithm()
{
      String algorithm = Security.getProperty(
          "ssl.KeyManagerFactory.algorithm");
      if (algorithm == null) {
        algorithm = "SunX509";
      }
      return algorithm;
}

Even though it gets rid of the error "SunX509 TrustManagerFactory not available" when applied, I then get another error in place of it :

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

I do not understand this "certificate expired" exception.

To add, 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.2#6252)