Great!

Also good that we found the deadlock condition. Usually nested contexts are used in a (semi)single-threaded environment, e.g. to provide local "savepoints" for nested Swing dialogs, or in a "context- per-web-request" situation with the same goal to avoid committing the main context between multiple requests... So this got overlooked. Now I was able to easily reproduce the condition:

https://issues.apache.org/cayenne/browse/CAY-957

Will work on fixing it, but also good to know that there's not much urgency in that.

Thanks,
Andrus


On Jan 9, 2008, at 10:51 AM, Álvaro Martínez wrote:


Using brand new data contexts solved the problem! I just replaced this function:

  public DataContext getNewContext() {
      DataContext newContext = context.createChildDataContext();
      newContext.setTransactionEventsEnabled(true);
      newContext.setValidatingObjectsOnCommit(true);
      return newContext;
  }

With this one:

  public DataContext getNewContext() {
      return DataContext.createDataContext(true);
  }

And everything is ok now. I didn't touch any other piece of code.

Thank you very much!



Andrus Adamchik escribió:
BTW, while I am investigating the bug with nested contexts ... do you have to use them at all? Can you just use multiple peer DataContexts instead?

Andrus



Reply via email to