
On Jun 1, 2015, at 15:59 , Tomas Jelinek <tjelinek@redhat.com> wrote:
----- Original Message -----
From: "Liran Zelkha" <lzelkha@redhat.com> To: "Tomas Jelinek" <tjelinek@redhat.com> Cc: awels@redhat.com, devel@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
does this happen in normal mode too?
On Jun 1, 2015, at 4:33 PM, Tomas Jelinek <tjelinek@redhat.com> wrote:
----- Original Message -----
From: "Alexander Wels" <awels@redhat.com> To: devel@ovirt.org Cc: "Tomas Jelinek" <tjelinek@redhat.com>, "Liran Zelkha" <lzelkha@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@ovirt.org http://lists.ovirt.org/mailman/listinfo/devel
_______________________________________________ Devel mailing list Devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/devel