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 17:00:16 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 ]

Mickael Olivier updated FLUME-2452:
-----------------------------------

    Description: 
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.
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

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


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