Yes!!! This seems to be the exact issue. I have worked around it by getting jsonb to do a simple string to object mapping as soon as I've configured it in my provider. Only then do I allow multiple threads to use it.
On Tue, 26 Feb 2019, 13:26 Jonathan Gallimore, <[email protected]> wrote: > Hi Paul > > Does this (from the Johnzon mailing list yesterday): > http://mail-archives.apache.org/mod_mbox/johnzon-dev/201902.mbox/browser > sound similar to your issue? > > Regards > > Jon > > On Tue, Feb 26, 2019 at 12:29 AM Jonathan Gallimore < > [email protected]> wrote: > > > I'd be pretty surprised if the ear vs war deployment made a difference, > > but you never know... feel free to send your working war sample over, it > > might just help us bootstrap something. It would be useful to get the > full > > guru.jini.arch.impl.json.JsonImpl.toObject and > > guru.jini.arch.impl.json.JsonImpl.toList methods. Or the whole > > guru.jini.arch.impl.json.JsonImpl class, if you're able to share it. We > can > > help set up something to hammer that code. > > > > Also, can we get the rest of the stack below > > guru.jini.arch.impl.json.JsonImpl.toList/toObject? > > > > Thanks > > > > Jon > > > > On Mon, Feb 25, 2019 at 11:59 PM Paul Carter-Brown > > <[email protected]> wrote: > > > >> Hi Daniel, > >> > >> For the life of me I cannot recreate the issue in a simple project with > a > >> WAR. My project is an EAR with multiple WARS. I will continue trying but > >> in > >> the meantime wondered if anyone has any clues where to look? > >> > >> Paul Carter-Brown > >> Director > >> Jini Guru > >> m: +27 (0) 83 442 7179 <+27834427179> > >> a: 1st Floor, Golf House, Design Quarter, Cnr. William Nicol and Leslie > >> Johannesburg, South Africa > >> w: jini.guru e: [email protected] > >> > >> Disclaimer: This message and/or attachment(s) may contain > >> privileged, confidential and/or personal information. If you are not the > >> intended recipient you may not disclose or distribute any of > >> the information contained within this message. In such case you must > >> destroy this message and inform the sender of the error. Jini Guru may > not > >> accept liability for any errors, omissions, information and viruses > >> contained in the transmission of this message. Any opinions, conclusions > >> and other information contained within this message not related to Jini > >> Guru official business is deemed to be that of the individual only and > is > >> not endorsed by Jini Guru. > >> > >> > >> > >> On Mon, Feb 25, 2019 at 7:41 PM Daniel Cunha <[email protected]> > >> wrote: > >> > >> > Hi Paul, > >> > > >> > could you share a sample project with your issue? > >> > It will help to reproduce and analyze your case. > >> > > >> > Thank you. > >> > > >> > Em seg, 25 de fev de 2019 às 14:35, Paul Carter-Brown > >> > <[email protected]> escreveu: > >> > > >> > > Hi, > >> > > > >> > > I'm using Johnzon in TomEE 8.0.0-M2. In some rest calls, I do my own > >> > > marshalling from a string to an Object. Intermittently (maybe 50% of > >> the > >> > > times I bounce TomEE), after TomEE starts and I send rest requests > to > >> the > >> > > server, threads lock up and I get timeouts. It appears as though the > >> > > threads never free up and get stuck in one of two states: > >> > > > >> > > "TomEE-Exec-1" #228 daemon prio=5 os_prio=0 tid=0x00007fddb0b22800 > >> > > nid=0x1e4 in Object.wait() [0x00007fddac4df000] > >> > > java.lang.Thread.State: RUNNABLE > >> > > at > >> > > > >> > > > >> > > >> > org.apache.johnzon.core.JsonArrayBuilderImpl.build(JsonArrayBuilderImpl.java:319) > >> > > at > >> > > > >> > org.apache.johnzon.core.JsonReaderImpl.readValue(JsonReaderImpl.java:100) > >> > > at > >> > > > >> > > > >> > > >> > org.apache.johnzon.mapper.MappingParserImpl.readObject(MappingParserImpl.java:125) > >> > > at org.apache.johnzon.mapper.Mapper.mapObject(Mapper.java:254) > >> > > at org.apache.johnzon.mapper.Mapper.readCollection(Mapper.java:202) > >> > > at > >> org.apache.johnzon.jsonb.JohnzonJsonb.fromJson(JohnzonJsonb.java:190) > >> > > at guru.jini.arch.impl.json.JsonImpl.toList(JsonImpl.java:129) > >> > > > >> > > OR > >> > > > >> > > "TomEE-Exec-6" #237 daemon prio=5 os_prio=0 tid=0x00007fddb008d000 > >> > > nid=0x224 in Object.wait() [0x00007fddb4bce000] > >> > > java.lang.Thread.State: RUNNABLE > >> > > at > >> > > > >> > > > >> > > >> > org.apache.johnzon.core.JsonObjectBuilderImpl.add(JsonObjectBuilderImpl.java:122) > >> > > at > >> > > > >> > > >> > org.apache.johnzon.core.JsonReaderImpl.parseObject(JsonReaderImpl.java:221) > >> > > at > >> > > org.apache.johnzon.core.JsonReaderImpl.readValue(JsonReaderImpl.java:83) > >> > > at > >> > > > >> > > > >> > > >> > org.apache.johnzon.mapper.MappingParserImpl.readObject(MappingParserImpl.java:125) > >> > > at org.apache.johnzon.mapper.Mapper.mapObject(Mapper.java:254) > >> > > at org.apache.johnzon.mapper.Mapper.readObject(Mapper.java:189) > >> > > at org.apache.johnzon.mapper.Mapper.readObject(Mapper.java:184) > >> > > at > >> org.apache.johnzon.jsonb.JohnzonJsonb.fromJson(JohnzonJsonb.java:58) > >> > > at guru.jini.arch.impl.json.JsonImpl.toObject(JsonImpl.java:124) > >> > > > >> > > The more requests I send the more threads end up in one of these 2 > >> > states. > >> > > This happens irrespective of the string I am marshalling to an > object > >> and > >> > > irrespective of the class I am trying to marshal to. > >> > > The threads are not in a loop as the CPU remains low and if I run > >> jstack > >> > > over and over these threads remain in the same state. > >> > > See how the threads are RUNNABLE and yet are in Object.wait(). I > >> cannot > >> > > understand what is going on as both those lines of code seem > innocent > >> > > enough so what are they waiting for??? > >> > > > >> > > I can then bounce the JVM and it can work flawlessly and then bounce > >> it > >> > > again and the issue can happen. Its as though there is a race > >> condition > >> > in > >> > > the boot process that puts things into a weird state. > >> > > > >> > > in guru.jini.arch.impl.json.JsonImpl I create the jsonb as follows. > >> I've > >> > > tried sharing a single instance as well as creating a new one on > each > >> > call > >> > > - with no change in results: > >> > > > >> > > JsonbConfig config = new JsonbConfig() > >> > > .withPropertyVisibilityStrategy(new > >> > > PropertyVisibilityStrategy() { > >> > > @Override > >> > > public boolean isVisible(Field field) { > >> > > return > Modifier.isPublic(field.getModifiers()) > >> > > || > >> > > Modifier.isProtected(field.getModifiers()); > >> > > } > >> > > > >> > > @Override > >> > > public boolean isVisible(Method method) { > >> > > return > >> Modifier.isPublic(method.getModifiers()); > >> > > } > >> > > }) > >> > > .withAdapters(new ZonedDateTimeAdapter()); > >> > > jsonb = > JsonbBuilder.newBuilder().withConfig(config).build(); > >> > > > >> > > > >> > > > >> > > Paul Carter-Brown > >> > > Director > >> > > Jini Guru > >> > > m: +27 (0) 83 442 7179 <+27834427179> > >> > > a: 1st Floor, Golf House, Design Quarter, Cnr. William Nicol and > >> Leslie > >> > > Johannesburg, South Africa > >> > > w: jini.guru e: [email protected] > >> > > > >> > > Disclaimer: This message and/or attachment(s) may contain > >> > > privileged, confidential and/or personal information. If you are not > >> the > >> > > intended recipient you may not disclose or distribute any of > >> > > the information contained within this message. In such case you must > >> > > destroy this message and inform the sender of the error. Jini Guru > may > >> > not > >> > > accept liability for any errors, omissions, information and viruses > >> > > contained in the transmission of this message. Any opinions, > >> conclusions > >> > > and other information contained within this message not related to > >> Jini > >> > > Guru official business is deemed to be that of the individual only > >> and is > >> > > not endorsed by Jini Guru. > >> > > > >> > > >> > > >> > -- > >> > Daniel "soro" Cunha > >> > https://twitter.com/dvlc_ > >> > > >> > > >
