[seam-dev] Re: Hibernate search 3.1.1.GA w/ seam

Emmanuel Bernard emmanuel at hibernate.org
Mon Jun 29 04:07:22 EDT 2009


I agree with you, calling flushToIndexes is an acceptable workaround. 
Though the idea of not having a transaction is demonstrating a bad 
practice and should be avoided in an example :)
But we can live with it for a little while if needed.

Sanne Grinovero a écrit :
> Some more investigation about JBSEAM-4257:
> I did a svn-diff from Seam 2.1.2 which was fine with this test to 2.2,
> which is failing.
> As no code has changed regarding transaction handling I did some more
> tests and discovered that I was wrong about the transaction being not
> committed: there is no transaction at all.
>
> Emmanuel, I got tricked by my own code from [HSEARCH-178 : Out of
> transaction work causes collection lazy loading to throw
> AssertionFailure] you remember to workaround flushing out of
> transaction Search is now "faking" a transaction, creating a
> TransactionalWorker bound to a flush listener, instead of performing
> the work immediately as previous versions.
> This led me to think yesterday that I actually was in a transaction.
>
> So now I've verified that the transaction was missing in Seam 2.1.2
> too, but in that case using Search 3.0.1 when there is no transaction
> the work is immediately done and not postponed, so the flush or commit
> were not needed for the example to work correctly.
>
> To use flushToIndexes() is a workaround for JBSEAM-4257, if fixing
> JBSEAM-4278 is not possible now.
>
> Please can someone comment about JBSEAM-4278? If it can't be fixed
> soon I think that JBSEAM-4257 could be closed as the workaround is
> applied already.
>
> regards,
> Sanne
>
> 2009/6/27 Sanne Grinovero <sanne.grinovero at gmail.com>:
>   
>> I've been stepping through the blog example with a debugger to look
>> into JBSEAM-4257;
>> the transaction is fine but it appears that it doesn't get to commit
>> after the method invocation.
>>
>> If I convert the component to a @Stateful bean *and* change the "@In
>> FullTextEntityManager" into
>> a "@PersistenceContext EntityManager" it does work: the transaction is
>> committed and the test
>> succeeds.
>> If I only convert the pojo into a Stateful bean and keep using "@In"
>> to inject entitymanager, it doesn't
>> inject and the method is called having null EntityManager -> NPE.
>>
>> The dvdstore example is not affected by this, as the indexer
>> implementation of dvdstore
>> is using a @Stateful bean and @PersistenceContext already.
>>
>> The problem is the @Create annotated method combined with @Startup and
>> @Scope(ScopeType.APPLICATION):
>> if I remove @Startup and have the method called before the first
>> search (I experimented having it injected with create=true in the
>> search
>> service) the behaviour is correct: the transaction is committed, the
>> index is updated and the search results are fine.
>>
>> I've opened JBSEAM-4278 for this; should I open a second one for the
>> missing injections in EJB3 stateful beans?
>> I'm not sure if it the same issue, I mentioned it in the description.
>>
>> Sanne
>>
>>
>> 2009/6/26 Emmanuel Bernard <emmanuel at hibernate.org>:
>>     
>>> That's a problem. We need to understand why no tx is enlisted from an
>>> hibernate pov. Looks like a config bug or something more severe on the
>>> hibernate side.
>>>
>>> On 26 juin 2009, at 01:09, Sanne Grinovero <sanne.grinovero at gmail.com>
>>> wrote:
>>>
>>>       
>>>> Hi Norman, Emmanuel,
>>>> I think it was working for Norman in JBoss because it somehow used the
>>>> existing index, as the blog example was not doing cleanup;
>>>> removing the index I verified it behaves the same when deployed or with
>>>> testNG.
>>>>
>>>> I've attached a patch here to remove existing data from the index at
>>>> startup (purgeAll) and making sure the new data
>>>> is flushed to the index (entityManager.flushToIndexes();).
>>>>
>>>> This makes the test succeed, but I'm unsure about this being the
>>>> proper fix. Emmanuel, WDYT? I was not expecting
>>>> to have the flushToIndexes being mandatory... it appears there is no
>>>> transaction committed by Seam?
>>>> The dvdstore is using a similar indexing routine, and it appears to be
>>>> working fine even withouth the flush.
>>>>
>>>> greetings,
>>>> Sanne
>>>>
>>>>
>>>> 2009/6/24 Sanne Grinovero <sanne.grinovero at gmail.com>:
>>>>         
>>>>> Hello,
>>>>> I can look into this on friday 26, is that a good time?
>>>>>
>>>>> Sanne
>>>>>
>>>>> 2009/6/24 Emmanuel Bernard <emmanuel at hibernate.org>:
>>>>>           
>>>>>> My machine crashed yesterday so I won't be able to look into that.
>>>>>> Sanne probably can help as he has done the latest Hibernate migration in
>>>>>> Seam.
>>>>>> Or maybe Hardy.
>>>>>>
>>>>>> Emmanuel
>>>>>>
>>>>>> On  Jun 23, 2009, at 06:57, Emmanuel Bernard wrote:
>>>>>>
>>>>>>             
>>>>>>> Damn I'm on the road this week.
>>>>>>> Can you give me the SVN url for me to reproduce?
>>>>>>>
>>>>>>> That must be a dump thing.
>>>>>>>
>>>>>>> On  Jun 23, 2009, at 02:59, Norman Richards wrote:
>>>>>>>
>>>>>>>               
>>>>>>>> We've upgraded Hibernate search for Seam 2.2, but we're getting one
>>>>>>>> small
>>>>>>>> issue with it when running unit tests with the blog example:
>>>>>>>>
>>>>>>>> https://jira.jboss.org/jira/browse/JBSEAM-4257
>>>>>>>>
>>>>>>>> I tracked it down to being an issue with the index directory not
>>>>>>>> getting
>>>>>>>> correctly populated.  If I copy the index directory from the blog
>>>>>>>> example
>>>>>>>> running in jboss, everything works fine.  Any ideas why the index
>>>>>>>> wouldn't
>>>>>>>> be created correctly?
>>>>>>>>
>>>>>>>> Specifically, what is created during unit tests is:
>>>>>>>>
>>>>>>>> $ ls -al domain.BlogEntry/
>>>>>>>> total 16
>>>>>>>> drwxr-xr-x  4 orb  staff  136 Jun 22 19:19 .
>>>>>>>> drwxr-xr-x  3 orb  staff  102 Jun 22 19:19 ..
>>>>>>>> -rw-r--r--  1 orb  staff   20 Jun 22 19:19 segments.gen
>>>>>>>> -rw-r--r--  1 orb  staff   28 Jun 22 19:19 segments_1
>>>>>>>>
>>>>>>>>
>>>>>>>> whereas when running in AS, I get:
>>>>>>>>
>>>>>>>> burrito:blogindexes orb$ ls -al domain.BlogEntry
>>>>>>>> total 168
>>>>>>>> drwxr-xr-x  19 orb   staff   646 Jun  9 14:32 .
>>>>>>>> drwxr-xr-x   3 orb   staff   102 Jun  3 15:19 ..
>>>>>>>> -rw-r--r--   1 root  staff  6027 Jun  9 13:15 _2s.cfs
>>>>>>>> -rw-r--r--   1 root  staff     9 Jun  9 13:52 _2s_3.del
>>>>>>>> -rw-r--r--   1 root  staff  4818 Jun  9 13:15 _2t.cfs
>>>>>>>> -rw-r--r--   1 root  staff     9 Jun  9 13:52 _2t_1.del
>>>>>>>> -rw-r--r--   1 root  staff  1121 Jun  9 13:15 _2u.cfs
>>>>>>>> -rw-r--r--   1 root  staff     9 Jun  9 13:52 _2u_1.del
>>>>>>>> -rw-r--r--   1 root  staff   976 Jun  9 13:52 _2v.cfs
>>>>>>>> -rw-r--r--   1 orb   staff     9 Jun  9 14:32 _2v_1.del
>>>>>>>> -rw-r--r--   1 root  staff  4818 Jun  9 13:52 _2w.cfs
>>>>>>>> -rw-r--r--   1 orb   staff     9 Jun  9 14:32 _2w_1.del
>>>>>>>> -rw-r--r--   1 root  staff  1121 Jun  9 13:52 _2x.cfs
>>>>>>>> -rw-r--r--   1 orb   staff     9 Jun  9 14:32 _2x_1.del
>>>>>>>> -rw-r--r--   1 orb   staff   976 Jun  9 14:32 _2y.cfs
>>>>>>>> -rw-r--r--   1 orb   staff  4818 Jun  9 14:32 _2z.cfs
>>>>>>>> -rw-r--r--   1 orb   staff  1121 Jun  9 14:32 _30.cfs
>>>>>>>> -rw-r--r--   1 orb   staff    20 Jun  9 14:32 segments.gen
>>>>>>>> -rw-r--r--   1 orb   staff   254 Jun  9 14:32 segments_8r
>>>>>>>>
>>>>>>>> If you can even give me some idea what code to look at, it would be a
>>>>>>>> great help.  Thanks.
>>>>>>>>
>>>>>>>>                 
>>>>>>             
>>>> <examples-blog.diff>
>>>>         




More information about the seam-dev mailing list