[ovirt-devel] hibernate's internal PersistentBag sent to FE

Tomas Jelinek tjelinek at redhat.com
Mon Jun 1 13:59:43 UTC 2015



----- Original Message -----
> From: "Liran Zelkha" <lzelkha at redhat.com>
> To: "Tomas Jelinek" <tjelinek at redhat.com>
> Cc: awels at redhat.com, devel at ovirt.org
> Sent: Monday, June 1, 2015 3:56:03 PM
> Subject: Re: [ovirt-devel] hibernate's internal PersistentBag sent to FE
> 
> Guys,
> 
> Why is https://gerrit.ovirt.org/#/c/40804/ not enough?

because the PersistenBag has an inner property "bag" and FE fails on bunch of NPEs because of it

> Where do you get these errors?

open debug mode and load webadmin - you will see loads of NPEs

> 
> 
> 
> > On Jun 1, 2015, at 4:33 PM, Tomas Jelinek <tjelinek at redhat.com> wrote:
> > 
> > 
> > 
> > ----- Original Message -----
> >> From: "Alexander Wels" <awels at redhat.com>
> >> To: devel at ovirt.org
> >> Cc: "Tomas Jelinek" <tjelinek at redhat.com>, "Liran Zelkha"
> >> <lzelkha at redhat.com>
> >> Sent: Monday, June 1, 2015 3:16:34 PM
> >> Subject: Re: [ovirt-devel] hibernate's internal PersistentBag sent to FE
> >> 
> >>> On Monday, June 01, 2015 09:08:50 AM Tomas Jelinek wrote:
> >>> Hey all,
> >>> 
> >>> since the org.ovirt.engine.core.common.job.Job/Step... has been moved to
> >>> use
> >>> the JPA we have a problem on frontend. The problem is that the @OneToMany
> >>> annotations results in a List which is of type PersistentBag. When we
> >>> send
> >>> this to Frontend it fails during deserialization. It actually fails quite
> >>> bad because the FE already has an ui-override of it which is not correct
> >>> resulting in a ton of NPEs in development mode.
> >>> 
> >>> So, there are 2 nasty fixes I have made where none of them should be
> >>> merged
> >>> but demonstrate the possibilities: 1: extend the FE to be able to work
> >>> with
> >>> the PersistentBag (https://gerrit.ovirt.org/#/c/41682/) not really good
> >>> solution since the PersistenBag is an internal Hibernate class which is
> >>> really not meant to be passed around
> >>> 
> >>> 2: fix on the backend to not send the PersistentBag but an ArrayList.
> >>> This
> >>> is only a PoC fixed on a command we face the problem
> >>> (https://gerrit.ovirt.org/#/c/41797/) Obviously this is not going to work
> >>> for other commands accessing the same Job nor for other entities.
> >>> 
> >>> So, the first option is generic but very very bad. The second option
> >>> should
> >>> be used but not sure how to do this in a cheep way (e.g. without using
> >>> reflection to deep traverse everything sent back to frontend checking if
> >>> it
> >>> does not have a PersistentBag in it.
> >> 
> >> Tomas,
> >> 
> >> Thanks, I was investigating the same issue, I noticed it last Friday just
> >> before leaving, so I was investigating the problem to see what was going
> >> on.
> >> You are right we should not be sending PersistentBag to the frontend at
> >> all.
> >> So how about we do a combination of [1] and [2], but instead of delegating
> >> in
> >> [1] we actually simple throw an exception stating don't sent PersistentBag
> >> to
> >> the front end. that way anyone inadvertently using it will be notified
> >> immediately (since their code won't work).
> > 
> > Throwing the exception would help us in debugging but the main question is
> > how will we make it work?
> > Since we are planning to move more and more to JPA so we will face this
> > issue more and more often.
> > Solving it one by one on backend in each command is not going to work.
> > 
> >> 
> >> Alexander
> >> 
> >>> Any better ideas?
> >>> Thanx,
> >>> Tomas
> >>> _______________________________________________
> >>> Devel mailing list
> >>> Devel at ovirt.org
> >>> http://lists.ovirt.org/mailman/listinfo/devel
> >> 
> >> 
> 



More information about the Devel mailing list