On Mar 15, 2007, at 7:55 PM, Brian Kirsch wrote:
Hi Morgen,
As a follow up to what Mimi is saying see my comments inline.
-Brian
On Mar 15, 2007, at 4:18 PM, Mimi Yin wrote:
Okay, sorry the addressing fields/conflict discussion on the list
was a little over my head. Why do changes to the addressing fields
result in conflicts?
How is what I'm describing different from the Editor/Updater
manually adding the Sender to the CC: field in the detail view?
(Just chatted with bkirsch, and the behavior I'm describing is
*no* different than a user manually changing the addressing
fields...so that leads me to think that there's an issue if
changing the addressing fields raises conflicts. Morgen, can you
speak to that?) If this is true, we should log a bug, even if just
to keep track of it for post-preview.
The question is, does altering addressing fields result in
conflicts on the receivers end?
A conflict is when both parties make a change to the same field.
There are two possibilities I can think of: the receiver is making a
change to the field (as well as the sender), or the peer State item
is getting messed up and is forgetting what records the two peers had
previously agreed on. If you can email me the debug output I can see
right away.
With the attached patch, that represents latest changes to mail
service to support Edit / Update, when I change the addressing
fields on an Item (MailStamp) it raises a conflict for the receivers.
This may not be the intended behavior.
What would be ideal is if any changes to the addressing fields did
not result in a conflict unless
a local change was made that contradicts the values in the update.
<chandler.diff>
-Brian
When I tried out this patch and emailed an update, I got the
following error, which looks like changes were made to the shared
item's deliveryExtension attribute in two different views:
Traceback (most recent call last):
File "/Users/morgen/dev/release/Library/Frameworks/
Python.framework/Versions/2.5/lib/python2.5/threading.py", line 440,
in run
self.__target(*self.__args, **self.__kwargs)
File "/Users/morgen/dev/release/Library/Frameworks/
Python.framework/Versions/2.5/lib/python2.5/site-packages/twisted/
python/threadpool.py", line 148, in _worker
context.call(ctx, function, *args, **kwargs)
File "/Users/morgen/dev/release/Library/Frameworks/
Python.framework/Versions/2.5/lib/python2.5/site-packages/twisted/
python/context.py", line 59, in callWithContext
return self.currentContext().callWithContext(ctx, func, *args,
**kw)
File "/Users/morgen/dev/release/Library/Frameworks/
Python.framework/Versions/2.5/lib/python2.5/site-packages/twisted/
python/context.py", line 37, in callWithContext
return func(*args,**kw)
--- <exception caught here> ---
File "/Users/morgen/dev/release/Library/Frameworks/
Python.framework/Versions/2.5/lib/python2.5/site-packages/twisted/
internet/threads.py", line 25, in _putResultInDeferred
result = f(*args, **kwargs)
File "/Users/morgen/dev/trees/vanilla/parcels/osaf/mail/base.py",
line 569, in _tryCommit
self.view.commit()
File "/Users/morgen/dev/trees/vanilla/repository/persistence/
DBRepositoryView.py", line 605, in commit
self.refresh(mergeFn, None, notify)
File "/Users/morgen/dev/trees/vanilla/repository/persistence/
DBRepositoryView.py", line 299, in refresh
forwards = self._refresh(mergeFn, version, notify)
File "/Users/morgen/dev/trees/vanilla/repository/persistence/
DBRepositoryView.py", line 335, in _refresh
self._refreshForwards(mergeFn, self.itsVersion + 1, True)
File "/Users/morgen/dev/trees/vanilla/repository/persistence/
DBRepositoryView.py", line 487, in _refreshForwards
conflicts, indexChanges, dangling)
File "/Users/morgen/dev/trees/vanilla/repository/persistence/
DBRepositoryView.py", line 900, in _applyChanges
conflicts, dangling)
File "/Users/morgen/dev/trees/vanilla/repository/item/Values.py",
line 1072, in _applyChanges
nextValue = ask(MergeError.REF, name, newValue)
File "/Users/morgen/dev/trees/vanilla/repository/persistence/
DBRepositoryView.py", line 856, in ask
self._e_1_overlap(reason, item, name)
File "/Users/morgen/dev/trees/vanilla/repository/persistence/
DBRepositoryView.py", line 942, in _e_1_overlap
raise MergeError, ('callback', item, 'merging values for %s on %
s failed because no merge callback was defined or because the merge
callback(s) punted' %(name, item._repr_()), code)
repository.persistence.RepositoryError.MergeError: (callback) merging
FOO failed because merging values for
osaf.pim.mail.MailStamp.deliveryExtension on <Note: daff51ca-
d37b-11db-e446-b8dfba492aa3> failed because no merge callback was
defined or because the merge callback(s) punted, reason code: REF
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Open Source Applications Foundation "Design" mailing list
http://lists.osafoundation.org/mailman/listinfo/design