On Fri, May 7, 2021 at 8:18 AM Hugi Thordarson <h...@karlmenn.is> wrote:

> Well I'll be… Over two decades of full time Java and I somehow didn't know
> about that stack trace omission. Yikes. Thanks!


You’ve just never caused an error that bad before right? 😉


>
> Now, looking at the first occurrence of the exception after app startup, I
> see the NPE is happening in @PreUpdate on a listener registered to my
> DataDomain. The offending code looks a bit like this:
>
> @PreUpdate({ BaseDataObject.class })
> public void handleUpdate( final BaseDataObject dataObject ) {
>         final DataContext dc = (DataContext)dataObject.getObjectContext();
>         final ObjectId objectId = dataObject.getObjectId();
>         final ObjEntity entity = dc.getEntityResolver().getObjEntity(
> objectId.getEntityName() );
>         final DataRow snapshot = dc.getObjectStore().getSnapshot( objectId
> );
>
>         for( final ObjAttribute objAttribute : entity.getAttributes() ) {
>                 final Object originalValue = snapshot.get(
> objAttribute.getDbAttributeName() );
>                 [ ... irrelevant rest of code omitted ... ]
>         }
> }
>
> …the NPE gets thrown by the first line in the for-loop (…snapshot.get(
> objAttribute.getDbAttributeName() )).
>
> So it seems either 'snapshot' or 'objAttribute' is null, probably the
> snapshot, right? Any ideas why that might be?
>
> - hugi
>
>
>
> > On 7 May 2021, at 12:53, John Huss <johnth...@gmail.com> wrote:
> >
> > Or if you have older logs, you can look back farther to find one without
> > the cause omitted.
> >
> > On Fri, May 7, 2021 at 7:52 AM John Huss <johnth...@gmail.com> wrote:
> >
> >> It will omit the trace if it has happened a very large number of times.
> If
> >> you restart the server it will start printing it again when it happens.
> >>
> >> On Fri, May 7, 2021 at 7:26 AM Hugi Thordarson <h...@karlmenn.is>
> wrote:
> >>
> >>> One would think so, but there's just no stack trace printed for the
> >>> NullPointerException.
> >>>
> >>>
> >>>> On 7 May 2021, at 12:24, John Huss <johnth...@gmail.com> wrote:
> >>>>
> >>>> The first line of the stack after the Caused By line would tell you
> the
> >>>> line with the problem, wouldn't it? What was that line?
> >>>>
> >>>> On Fri, May 7, 2021 at 7:16 AM Hugi Thordarson <h...@karlmenn.is>
> >>> wrote:
> >>>>
> >>>>> Hi all,
> >>>>>
> >>>>> occasionally my users encounter errors when committing changes to the
> >>> DB.
> >>>>> The relevant part of the stack trace looks like this:
> >>>>>
> >>>>> ---------
> >>>>> org.apache.cayenne.CayenneRuntimeException: [v.4.1 Jul 14 2020
> >>> 10:26:08]
> >>>>> Commit Exception
> >>>>>       at
> >>>>>
> >>>
> org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:774)
> >>>>>       at
> >>>>>
> >>>
> org.apache.cayenne.access.DataContext.commitChanges(DataContext.java:691)
> >>>>>       [...removed rest of trace…]
> >>>>> Caused by: java.lang.NullPointerException
> >>>>> ---------
> >>>>>
> >>>>> Unfortunately I've been unable to reproduce this error, so before I
> >>> dive
> >>>>> into it I'm wondering if this looks familiar to anyone, if there are
> >>>>> obvious places to look or if there are recommendations for strategies
> >>> to
> >>>>> debug?
> >>>>>
> >>>>> Cheers,
> >>>>> - hugi
> >>>
> >>>
>
>

Reply via email to