Re: Re: trellis.Set.discard

"Sergey Schetinin" <[email protected]>
Newsgroups gmane.comp.python.peak
Message-ID <[email protected]>
On Sat, Oct 11, 2008 at 18:59, Phillip J. Eby <pje-Wh6+Hckhi6HFNGf7iClzIwC/[email protected]> wrote:
> At 04:04 AM 10/11/2008 +0300, Sergey Schetinin wrote:
>>
>> I've noticed that set.discard both reads and writes the set so
>> Set.discard should raise an exception.
>
> Eh?  It doesn't read and write the set, it performs an idempotent operation
> on the set.  To be a read, it would have to communicate information *out* of
> the method.

That's right, I just got confused for a moment.


> Congratulations; you just found a way to violate causality in a task.  :)
>
> What I don't understand is why this works when it's NOT in a task.  That is,
> if you change TaskCell to @trellis.atomically and take out the yield, it
> does what we expect it to.
>
> The discard operation uses to_add, which sets up a savepoint at a time when
> .v is false.  Later, when .v is true, the add operation adds to to_add.
>  This second operation is also critical, because if you don't do the add, no
> rollback occurs.
>
> Clearly, there is some reason why the second execution of the maintain rule
> is being rolled back, which then forces a rollback all the way to the first
> execution of the rule.
>
> This would seem to imply that there is something dreadfully wrong with using
> these sorts of savepoints in "futures"; it is a flaw that they are allowed
> to rollback to the middle of a rule's execution.  They *should* be required
> to roll back all the way to the beginning of the rule, or something of that
> sort.
>
> But I am still baffled as to why this only seems to be triggered in the task
> case.

I was investigating exactly what is happening and stumbled over
something odd. When I add some debug prints, the version with
@atomically starts to print "False" as well. The minimal change to
trigger this is to add str(self.queues) to Controller.schedule in
stm.py. I imagine there's something in Cell.__repr__ that changes the
behavior, but don't yet understand what is it. It doesn't seem to
force the rule to run or anything like that.




-- 
Best Regards,
Sergey Schetinin

http://s3bk.com/ -- S3 Backup
http://word-to-html.com/ -- Word to HTML Converter
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.