Ok. The isDirty()/write()/add()/clearDirty() idiom explains why the patch was producing NPEs in other tests. Otherwise, the only other failures that seemed they could be related were from the optlock tests. Two were failing earlier (see http://opensource.atlassian.com/projects/hibernate/secure/attachment/12560/TEST-org.hibernate.test.optlock.OptimisticLockTest.txt) but all are failing with the patch, e.g.:

Testcase: testOptimisticLockAllDelete took 0.134 sec
        Caused an ERROR
Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1

~Josh.

Steve Ebersole wrote:
I've made some changes here locally which attempt to group fixes to a
bunch of these seemingly related issues.  So for PersistentSet.add()
(for example), I have:


        public boolean add(Object value) {
                Boolean exists = isOperationQueueEnabled() ?
                                readElementExistence(value) : null;
                if ( exists == null ) {
                        boolean initiallyDirty = isDirty();
                        write();
                        boolean actuallyAdded = set.add( value );
                        if ( !actuallyAdded ) {
                                if ( ! initiallyDirty && isDirty() ) {
                                        clearDirty();
                                }
                        }
                        return actuallyAdded;
                }
                else if ( exists.booleanValue() ) {
                        return false;
                }
                else {
                        queueOperation( new SimpleAdd(value) );
                        return true;
                }
        }

But I need to get time to properly test these changes before I commit
them.
_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to