Not really in a way that makes sense for a publicly archived ML like this, IMO. If you can "boil it down" to the essence of the problem you should be able to convey the example without revealing anything private. Alternatively, you can debug it yourself. If you want to report any problem you find in this manner you'd still need to boil it down later but as support is not guaranteed in community-run open source, DIY is always best.
Matt On Mon, Sep 25, 2023, 12:23 AM Debraj Manna <[email protected]> wrote: > I can share a reproducible project but I would like to avoid doing it in a > public link like in GitHub, etc. Is there a way to do that? > > On Mon, 25 Sep, 2023, 01:10 Matt Benson, <[email protected]> wrote: > > > TBH I'm somewhat surprised it doesn't already, but I haven't actually > > ran/debugged your example. > > > > On Sun, Sep 24, 2023 at 2:32 PM Debraj Manna <[email protected]> > > wrote: > > > > > Is there a way I can throw some error from jxpath when this situation > > > arises instead of getting stuck in a never ending loop? > > > > > > On Sun, 24 Sep, 2023, 22:54 Matt Benson, <[email protected]> wrote: > > > > > > > Well, to be clear, you can have linked nodes. But if N had both > `next` > > > and > > > > `previous` members is where you'd run into trouble. > > > > > > > > On Sun, Sep 24, 2023 at 12:22 PM Matt Benson <[email protected]> > > > wrote: > > > > > > > > > If you're doing a search down the tree you'd need some way to keep > > > JXPath > > > > > from traversing these relationships, yes. > > > > > > > > > > On Sun, Sep 24, 2023 at 11:59 AM Debraj Manna < > > > [email protected]> > > > > > wrote: > > > > > > > > > >> Are you saying that in JxPath we cannot use something like below? > > > > >> > > > > >> class A { > > > > >> int n; > > > > >> A next; > > > > >> } > > > > >> > > > > >> On Sun, Sep 24, 2023 at 8:43 PM Matt Benson <[email protected]> > > > wrote: > > > > >> > > > > >> > Is it possible the proto message (I'm not familiar with this > API) > > is > > > > >> built > > > > >> > with internal recursive references, i.e. some child has a > property > > > > that > > > > >> > points, possibly indirectly, to its parent? That would be the > most > > > > >> probable > > > > >> > explanation, particularly as you say feeding jxpath the known > > > absolute > > > > >> path > > > > >> > works. > > > > >> > > > > > >> > Matt > > > > >> > > > > > >> > On Sun, Sep 24, 2023, 9:44 AM Debraj Manna < > > > [email protected]> > > > > >> > wrote: > > > > >> > > > > > >> > > It looks like it is getting stuck in some infinite loop. The > > > thread > > > > >> stack > > > > >> > > looks like below after ~ 8 hours from the start. > > > > >> > > > > > > >> > > main Runnable CPU usage on sample: 979ms > > > > >> > > jdk.internal.reflect.GeneratedMethodAccessor640.invoke() > > > > >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > > > > > > > jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > > > > >> > > java.lang.reflect.Method.invoke(Method.java:568) > > > > >> > > > > > > >> > > > org.apache.commons.jxpath.util.ValueUtils.getValue(ValueUtils.java:367) > > > > >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > > > > > > > org.apache.commons.jxpath.ri.model.beans.BeanPropertyPointer.getBaseValue(BeanPropertyPointer.java:120) > > > > >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > > > > > > > org.apache.commons.jxpath.ri.model.beans.BeanPropertyPointer.getImmediateNode(BeanPropertyPointer.java:149) > > > > >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > > > > > > > org.apache.commons.jxpath.ri.model.beans.PropertyPointer.getImmediateValuePointer(PropertyPointer.java:161) > > > > >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > > > > > > > org.apache.commons.jxpath.ri.model.NodePointer.getValuePointer(NodePointer.java:297) > > > > >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > > > > > > > org.apache.commons.jxpath.ri.model.beans.PropertyIterator.getNodePointer(PropertyIterator.java:121) > > > > >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > > > > > > > org.apache.commons.jxpath.ri.axes.DescendantContext.nextNode(DescendantContext.java:115) > > > > >> > > > > > > >> > > > org.apache.commons.jxpath.ri.EvalContext.nextSet(EvalContext.java:349) > > > > >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > > > > > > > org.apache.commons.jxpath.ri.axes.ChildContext.getSingleNodePointer(ChildContext.java:70) > > > > >> > > > > > > >> > > > org.apache.commons.jxpath.ri.compiler.Path.searchForPath(Path.java:201) > > > > >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > > > > > > > org.apache.commons.jxpath.ri.compiler.Path.getSingleNodePointerForSteps(Path.java:176) > > > > >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > > > > > > > org.apache.commons.jxpath.ri.compiler.LocationPath.computeValue(LocationPath.java:87) > > > > >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > > > > > > > org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.getValue(JXPathContextReferenceImpl.java:353) > > > > >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > > > > > > > org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.getValue(JXPathContextReferenceImpl.java:313) > > > > >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > >> > > > > > > > > > > com.spotnana.webhooks.isos.PNRListBuilderTest.testJxPathCtx(PNRListBuilderTest.java:366) > > > > >> > > > > > > >> > > On Sun, Sep 24, 2023 at 1:24 AM Debraj Manna < > > > > >> [email protected]> > > > > >> > > wrote: > > > > >> > > > > > > >> > > > I am trying to search using JxPath on a proto message, My > > proto > > > > >> message > > > > >> > > is > > > > >> > > > placed here > > > > >> > > > < > > > > >> > > https://gist.github.com/debraj-manna/4a8ded5d79dc9aee8d4c03d460327284 > > > > >> > >. > > > > >> > > > > > > > >> > > > val protoStr = > > > > >> > > > > > > > getStringFromFile("classpath:BookingEnginePnrUpdateEventProto.txt"); > > > > >> > > > val msgBld = BookingEnginePNRUpdateEvent.newBuilder(); > > > > >> > > > TextFormat.getParser().merge(protoStr, msgBld); > > > > >> > > > val msgCtx = JXPathContext.newContext(msgBld.build()); > > > > >> > > > System.out.println(msgCtx.getValue("//employeeId")); > > > > >> > > > > > > > >> > > > I am observing that msgCtx.getValue("//employeeId") is > > taking a > > > > >> lot of > > > > >> > > > time. Thread dumps at various points are placed in the below > > > gist. > > > > >> > > > > > > > >> > > > > > > > >> > > https://gist.github.com/debraj-manna/47852fa190075abdacd527969f355cde > > > > >> > > > > > > > >> > > > If I specify the entire path like > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > > > > > > > msgCtx.getValue("/metadata/bookerInfo/traveler/userBusinessInfo/employeeId"). > > > > >> > > > It is working fine. > > > > >> > > > > > > > >> > > > Can someone let me know what is going wrong? Is this > expected? > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > > > > > > > > > > > >
