Also in TserverUtils:270, when the TNonblockingServerSocket is created it looks like it ends up using the default frame size. I am not sure if this is intentional or not.
On Thu, Dec 15, 2022 at 3:26 PM Vincent Russell <vincent.russ...@gmail.com> wrote: > Christopher, > > I am not sure if this issue is related to 3042 or not. > > On the client side it does look like TConfiguration ends up being called > with the default constructor. I am not sure if this is intentional or not. > > On the server side I see this stack, so it also looks like: > > at org.apache.thrift.TConfiguration.<init>(TConfiguration.java:36) > at org.apache.thrift.TConfiguration$Builder.build(TConfiguration.java:99) > at org.apache.thrift.TConfiguration.<clinit>(TConfiguration.java:65) > at > org.apache.thrift.transport.TNonblockingSocket.<init>(TNonblockingSocket.java:74) > at > org.apache.thrift.transport.TNonblockingSocket.<init>(TNonblockingSocket.java:68) > at > org.apache.thrift.transport.TNonblockingServerSocket.accept(TNonblockingServerSocket.java:135) > at > org.apache.thrift.transport.TNonblockingServerSocket.accept(TNonblockingServerSocket.java:36) > at > org.apache.thrift.server.TNonblockingServer$SelectAcceptThread.handleAccept(TNonblockingServer.java:218) > at > org.apache.thrift.server.TNonblockingServer$SelectAcceptThread.select(TNonblockingServer.java:186) > at > org.apache.thrift.server.TNonblockingServer$SelectAcceptThread.run(TNonblockingServer.java:142) > > > I see this in the server log so it does look like it should be using 1G: > 2022-09-01 16:59:41 INFO [org.apache.accumulo.tserver.TabletServer] > ServerUtil:124 - general.server.message.size.max = 1G > > Thanks, > Vincent > > On Thu, Dec 15, 2022 at 12:26 PM Vincent Russell < > vincent.russ...@gmail.com> wrote: > >> >> >> I had to make a stack trace with hacking together a remote debug instance: >> >> at >> org.apache.thrift.server.AbstractNonblockingServer$FrameBuffer.read(AbstractNonblockingServer.java:334) >> at >> org.apache.accumulo.server.rpc.CustomNonBlockingServer$CustomFrameBuffer.read(CustomNonBlockingServer.java:134) >> at >> org.apache.thrift.server.AbstractNonblockingServer$AbstractSelectThread.handleRead(AbstractNonblockingServer.java:187) >> at >> org.apache.thrift.server.TNonblockingServer$SelectAcceptThread.select(TNonblockingServer.java:189) >> at >> org.apache.thrift.server.TNonblockingServer$SelectAcceptThread.run(TNonblockingServer.java:142) >> >> On Thu, Dec 15, 2022 at 12:52 AM Christopher <ctubb...@apache.org> wrote: >> >>> From the numbers in the message, it looks like you're sending an 18MB >>> payload but something in Thrift is limiting things to 16384000 >>> (16000KB). I doubt you've overridden the default >>> general.server.message.size.max to be anything that low (the default >>> is 1G). Unless you're flushing after every mutation, it would not be >>> surprising to exceed the 16MB max frame size indicated in the error >>> message quite quickly. >>> >>> This value of 16384000 seemed weird. It looks like it's not using our >>> configuration, but using the built-in default value of >>> org.apache.thrift.TConfiguration.DEFAULT_MAX_FRAME_SIZE. It looks like >>> this can happen whenever `new TConfiguration()` is called without >>> parameters... and there's a fair amount of internal code, mostly in >>> libthrift itself, that does that. It's a bit tricky to track down the >>> one causing this particular issue. If you have a full stack trace, it >>> could help. >>> >>> Also, this might be the same issue seen reported in >>> https://github.com/apache/accumulo/issues/3042 >>> >>> On Wed, Dec 14, 2022 at 8:53 PM Vincent Russell >>> <vincent.russ...@gmail.com> wrote: >>> > >>> > I was able to work out all of my compilation issues; however when I >>> run an >>> > integration test with the Mini Accumulo Cluster that tests writing >>> > mutations with values of 5mb the flush hangs forever >>> > and I see the following logs in the TabletServer logs: >>> > >>> > 20:41:02.306 [Thread-7] ERROR >>> > o.a.a.s.r.CustomNonBlockingServer$CustomFrameBuffer - Read a frame >>> size of >>> > 18874697, which is bigger than the maximum allowable frame size >>> 16384000 >>> > for ALL connections. >>> > 20:41:03.582 [Thread-7] ERROR >>> > o.a.a.s.r.CustomNonBlockingServer$CustomFrameBuffer - Read a frame >>> size of >>> > 18874697, which is bigger than the maximum allowable frame size >>> 16384000 >>> > for ALL connections. >>> > 20:41:05.079 [Thread-7] ERROR >>> > o.a.a.s.r.CustomNonBlockingServer$CustomFrameBuffer - Read a frame >>> size of >>> > 18874697, which is bigger than the maximum allowable frame size >>> 16384000 >>> > for ALL connections. >>> > >>> > Other tests that write smaller amounts of data appear to work fine. >>> > >>> > Any idea what the issue might be? >>> > >>> > Thank you, >>> > Vincent >>> > >>> > On Tue, Dec 13, 2022 at 4:43 PM Vincent Russell < >>> vincent.russ...@gmail.com> >>> > wrote: >>> > >>> > > Thank you both for your responses. >>> > > >>> > > We are using an event store library from a sister project that was >>> written >>> > > for accumulo 1.10., which I have already upgraded to 2.0. >>> > > >>> > > I'll spend some time investigating how bad the usage of the internal >>> > > packages are and get back to you. >>> > > >>> > > Thanks again, >>> > > >>> > > On Tue, Dec 13, 2022 at 3:20 PM Christopher <ctubb...@apache.org> >>> wrote: >>> > > >>> > >> To add to Dave's answer, the public API is defined at >>> > >> https://accumulo.apache.org/api/ >>> > >> Anything else is not public and is subject to change without notice >>> on >>> > >> any release without any attempt to retain compatibility. >>> > >> >>> > >> On Tue, Dec 13, 2022 at 3:10 PM Dave Marion <dmario...@gmail.com> >>> wrote: >>> > >> > >>> > >> > There is no guide. You are using implementation classes (see >>> clientImpl >>> > >> in >>> > >> > the package name) vs. using the client api. If you can use the >>> client >>> > >> api >>> > >> > directly, then this should insulate you from changes in the future >>> > >> (except >>> > >> > during major versions). We can try and find where things might >>> have >>> > >> moved, >>> > >> > but a class may have been split into multiple pieces. If you could >>> > >> provide >>> > >> > class and method, that would be easier. >>> > >> > >>> > >> > On Tue, Dec 13, 2022 at 2:45 PM Vincent Russell < >>> > >> vincent.russ...@gmail.com> >>> > >> > wrote: >>> > >> > >>> > >> > > Is there a guide that shows where classes may have been moved >>> with >>> > >> moving >>> > >> > > from 2.0 to 2.1? For instance, I am having issues compiling, >>> because >>> > >> the >>> > >> > > following class doesn't exist: >>> > >> > > import org.apache.accumulo.core.clientImpl.Tables; >>> > >> > > >>> > >> > > I'm just getting started so I'm sure there are others. >>> > >> > > >>> > >> > > Thanks, >>> > >> > > Vincent >>> > >> > > >>> > >> > > >>> > >> > > >>> > >> > > On Fri, Dec 9, 2022 at 9:02 AM Vincent Russell < >>> > >> vincent.russ...@gmail.com> >>> > >> > > wrote: >>> > >> > > >>> > >> > > > I mean Christopher. >>> > >> > > > >>> > >> > > > Thanks again. >>> > >> > > > >>> > >> > > > On Fri, Dec 9, 2022 at 9:01 AM Vincent Russell < >>> > >> > > vincent.russ...@gmail.com> >>> > >> > > > wrote: >>> > >> > > > >>> > >> > > >> Thank you Chris. >>> > >> > > >> >>> > >> > > >> Will will upgrade to Accumulo 2.1 and ZooKeeper 3.7 or >>> later as >>> > >> soon as >>> > >> > > >> possible. >>> > >> > > >> >>> > >> > > >> On Thu, Dec 8, 2022 at 8:44 PM Christopher < >>> ctubb...@apache.org> >>> > >> wrote: >>> > >> > > >> >>> > >> > > >>> Hi Vincent, >>> > >> > > >>> >>> > >> > > >>> Version 2.0.1 is end of life as of the 2.1.0 LTM release, >>> and 2.0 >>> > >> is >>> > >> > > >>> not expected to receive any further updates. Version 2.1.0 >>> may >>> > >> work >>> > >> > > >>> with ZooKeeper 3.4, but was developed and tested against >>> 3.5 and >>> > >> later >>> > >> > > >>> versions. I believe the ZooKeeper community is currently >>> > >> considering >>> > >> > > >>> whether to make 3.6 end-of-life themselves, so I would >>> recommend >>> > >> using >>> > >> > > >>> Accumulo 2.1.0 with the latest ZooKeeper 3.7 or later to >>> have the >>> > >> best >>> > >> > > >>> chance of any kind of support, including JDK 17 support. >>> > >> > > >>> >>> > >> > > >>> As for your specific issues: >>> > >> > > >>> >>> > >> > > >>> 1. This is already fixed in 2.1.0 >>> > >> > > >>> 2/3. These issues are likely fixed in newer ZooKeeper >>> versions. I >>> > >> > > >>> haven't seen them anytime recently, anyway. Bugs in >>> ZooKeeper >>> > >> itself >>> > >> > > >>> are out of scope for the Accumulo developers, but I have >>> tried >>> > >> > > >>> building Accumulo 2.1.0 with JDK 17 and ZooKeeper 3.8.0 and >>> > >> haven't >>> > >> > > >>> observed any unresolved issues. However, it's difficult to >>> > >> actually >>> > >> > > >>> run it because I don't think Hadoop has good JDK 17 support >>> yet. >>> > >> So, >>> > >> > > >>> MiniAccumuloCluster seems to work with JDK 17, as does >>> Accumulo >>> > >> and ZK >>> > >> > > >>> 3.8, but I don't think a full Hadoop cluster would (yet). >>> > >> > > >>> >>> > >> > > >>> On Thu, Dec 8, 2022 at 12:28 PM Vincent Russell >>> > >> > > >>> <vincent.russ...@gmail.com> wrote: >>> > >> > > >>> > >>> > >> > > >>> > Hello, >>> > >> > > >>> > >>> > >> > > >>> > We are currently using accumulo 2.0.1. >>> > >> > > >>> > >>> > >> > > >>> > We are in the process of upgrading our source code to use >>> jdk 17 >>> > >> > > >>> however we >>> > >> > > >>> > are running into some problems with our tests and the >>> > >> > > >>> MiniAccumuloCluster. >>> > >> > > >>> > >>> > >> > > >>> > One of our developer encountered the following issues: >>> > >> > > >>> > >>> > >> > > >>> > 1. The MiniAccumumluoClusterImpl._exec is hardcoded >>> with the >>> > >> JVM >>> > >> > > arg >>> > >> > > >>> > -XX:+IUseConcMarkSweepGC, which is no longer tolerated >>> with >>> > >> JDK17. >>> > >> > > >>> > 2. In Zookeeper 3.4.14, ConetStringParser uses >>> > >> createUnresolved to >>> > >> > > >>> > make IPAddresses. >>> > >> > > >>> SaslServerPrincipal.WrapperInetSocketAddress.getAddress >>> > >> > > >>> > uses InetSocketAddess.getAddress, which returns null >>> because >>> > >> it's >>> > >> > > >>> not >>> > >> > > >>> > resolved, resulting in a failure to connect to the >>> > >> newly-started >>> > >> > > >>> zookeeper. >>> > >> > > >>> > 3. StaticHostProvider.getHostString() tries to extract >>> he >>> > >> hostname >>> > >> > > >>> by >>> > >> > > >>> > calling toString on the address and taking everything >>> before >>> > >> the >>> > >> > > >>> colon, but >>> > >> > > >>> > in JDK17, the string format changed to >>> > >> > > "localhost/<unresolved->:xx" >>> > >> > > >>> (where >>> > >> > > >>> > XX is still the port number). That's incorrect and it >>> can't >>> > >> > > >>> resolve the >>> > >> > > >>> > names. >>> > >> > > >>> > >>> > >> > > >>> > >>> > >> > > >>> > Has anyone come across/resolved these kinds of issues? >>> Is it >>> > >> not >>> > >> > > >>> possible >>> > >> > > >>> > to use java17 from a client perspective? Will upgrading >>> to >>> > >> accumulo >>> > >> > > >>> 2.1 >>> > >> > > >>> > help? >>> > >> > > >>> > >>> > >> > > >>> > Thanks, >>> > >> > > >>> > Vincent >>> > >> > > >>> >>> > >> > > >> >>> > >> > > >>> > >> >>> > > >>> >>