apache / accumulo-proxy

Apache Accumulo Proxy
https://accumulo.apache.org
Apache License 2.0
9 stars 19 forks source link

Update to use accumulo version 2.1 #33

Closed DomGarguilo closed 1 year ago

DomGarguilo commented 2 years ago

As part of completing this ticket, the following code should be removed/replaced with the built in functionality of AccumuloITBase.getUniqueNames() from accumulo 2.1 https://github.com/apache/accumulo-proxy/blob/498ea89ce9c3fc1a59b66ec5458c5e34f1abd251/src/test/java/org/apache/accumulo/proxy/its/SimpleProxyBase.java#L274-L780

This code was added in #38 so that we could get unique names for resources within the tests. The method above was essentially copied from AccumuloITBase. This needed to be done since the difference in JUnit versions between accumulo and accumulo-proxy was causing issues with getUniqueNames().

DomGarguilo commented 2 years ago

I am in the process of getting things working with 2.1 but am running into some issues that I'm having trouble debugging. So far I've updated accumulo to version 2.1 and thrift to version 0.17 to match accumulo. When running the ITs, TCompactProxyIT passes fine but the other 3 ITs fail. TTupleProxyIT fails with:

org.apache.thrift.TApplicationException: don't know what type: 15

    at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:81)
    at org.apache.accumulo.proxy.thrift.AccumuloProxy$Client.recv_login(AccumuloProxy.java:476)
    at org.apache.accumulo.proxy.thrift.AccumuloProxy$Client.login(AccumuloProxy.java:462)
    at org.apache.accumulo.proxy.its.SimpleProxyBase.setup(SimpleProxyBase.java:320)
    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:566)
    at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
    at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
    at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
    at org.junit.jupiter.api.AssertTimeoutPreemptively.lambda$submitTask$3(AssertTimeoutPreemptively.java:95)
    at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)

TJsonProtocolProxyIT and TBinartProxtIT fail with:

org.apache.thrift.transport.TTransportException: Socket is closed by peer.

    at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:176)
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:100)
    at org.apache.thrift.transport.layered.TFramedTransport.readFrame(TFramedTransport.java:132)
    at org.apache.thrift.transport.layered.TFramedTransport.read(TFramedTransport.java:100)
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:100)
    at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:457)
    at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:359)
    at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:243)
    at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:79)
    at org.apache.accumulo.proxy.thrift.AccumuloProxy$Client.recv_login(AccumuloProxy.java:476)
    at org.apache.accumulo.proxy.thrift.AccumuloProxy$Client.login(AccumuloProxy.java:462)
    at org.apache.accumulo.proxy.its.SimpleProxyBase.setup(SimpleProxyBase.java:320)
    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:566)
    at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
    at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
    at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
    at org.junit.jupiter.api.AssertTimeoutPreemptively.lambda$submitTask$3(AssertTimeoutPreemptively.java:95)
    at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)

The only difference between the ITs is which TCompactProtocol.Factory is used.

I can't make much sense of what these exceptions mean and was hoping someone might have some ideas whats going on here.