Submitted by : simon at: 2003-10-26T21:31:33+00:00 (14 years ago)
Name :
Category : Severity : Status :
Optional subject :  
Optional comment :


JohnGreenaway, 2002/05/21 19:42 GMT (via web):
Ahh. We get this too. Had to remove the mailout option from out site (an intranet). Roughly 50% of pages seemed to do this. Noticed one way to fix it consistently, though not a very practical way, it may be of use finding out what's going on though. It seems if you subscribe then unsubscibe to problem pages, then restart zope, the page is fixed and future subs are ok...


Simon, 2002/05/21 19:53 GMT (via web):
thanks.. as soon as I can reproduce this again it should be an easy fix. It's something do with the subscriber_list containing [] as I recall.


2002/05/26 21:28 GMT (via web):
Easy to reproduce actually, and it's not all pages, only a certain subset. Unsubscribing reverses it. I've tracked it to this puzzling place: the subscriber_list property of certain pages appears to contain my email address when viewed in a browser, but is empty (as it should be) when viewed at the debug prompt.


Simon Michael <simon@joyful.com>, 2002/05/28 03:06 GMT (via mail):
Hi Steve - cc'ing this info to the bug page, I hope you don't mind.

Steve Alexander <steve@cat-box.net> writes:
> The link to zwiki.org was back up this morning, so I had a look around.
>
> I found that I could fix the problem by adding a new property TTW, for
> example: blue:fish (string type).
>
> Looking at the ZODB from the interactive interpreter, things are a bit odd.
>
> For example, doing this hangs the ZEO client:
>
> >>> Zope.app().zwiki.ronny.subscriber_list
> []
> >>> Zope.app().zwiki.ronny.__dict__
> {}
> >>> Zope.app().zwiki.ronny.id
> ^C^Cpthread_cond_wait: Resource temporarily unavailable
>
> Although I waited a reasonable time, I had to kill the python process to
> get it to stop.

I'm not seeing this. I did notice that when zope restarts, var/socket (how the client talks to the storage) gets it's permissions reset and then non-root users lose the ability to connect (it hangs as you describe). Perhaps something like this happened.


> When I wake the objects up properly, rather than trying to interact with
> ghosts as above, I find that ronny.subscriber_list is [], but
> ronny.__dict__.keys() does not contain subscriber_list.

That's interesting, I wasn't aware of the ghosts issue.


> My only thoughts at the moment are that there's something odd about the
> way you have ZEO set up, perhaps with the caching. That's a fairly
> unsubstantiated hunch, though.
>
> I'd need to spend some time doing somewhat more destructive, or at least
> intrusive, testing to find out more.
>
> You might want to run fsrecover on a copy of your Data.fs, just to make
> sure it is ok (it probably is).

Hmm, worth a try.


> It would be interesting to see what the object looks like in the
> interactive interpreter in a non-ZEO version of what you have.

Yes.

Thanks!


Simon, 2002/05/28 03:10 GMT (via web):
So, one workaround that might help with this bug: add a dummy property to each of the extra pages that appear when you subscribe.


Simon, 2002/05/31 06:39 GMT (via web):
I don't have any new clues, but I think a workaround just checked into cvs will fix it. Upgrade to the latest code and then call doSubscriberFixups on each of the pages listed, by hand or by script. Or just call it on all of your pages. It will affect bobobase_modification_time. I'd like to hear from anyone trying this.


Simon, 2002/05/31 07:00 GMT (via web):
call fix0161, rather.


Simon, 2002/06/02 01:51 GMT (via web):
recent checkins should also prevent this. Try the latest cvs code and see if it makes the problem go away. If not, try calling /fix0161 on the problem pages. If it's still broken, re-open this issue.


JohnGreenaway, 2002/06/02 15:25 GMT (via web):
Just tried intalling the latest cvs nightly (020602) clean on a seperate machine.

Oddly it seems to happen on every page now. Also happens on new pages created. Tried appending /fix0161 to the url - no difference. Again, any page you subscribe / unsubscribe from becomes OK when you restart zope. Don't really want to restart after every new page though. I've looked though subscribelist.py and can't see anything obviously dodgy, so I'm afraid I'm not too much help fixing it, beyond testing changes...


2002/06/06 20:29 GMT (via web):
I found out something that might be usefull for solving this bug. I was already subscribed to IssueNo161?, WikiMail and WikiMailDiscussion. When I tried to subscribe to my new page WikiSubscribers? Wiki subscribed me to the following pages:

WikiMail WikiMailDiscussion #161 subscribing to one page sometimes subscribes to many pages RecentChangesZC? RestructuredText ZWikiFAQ? CreatingFAQsInZwiki WhatAbout? APageWithInTheId? LinkContainingInternationalCharacters? UsesPace? UseSpace? AtEst? WhatHappensIfTheresAWikiNameInIt? RSSDiscussion ASubpage? TryAnother? AnyChar? APageWith? TestPage

It looks like all pages on the same level or something like that. Hope this info helps solving this bug.

PieterB


2002/06/06 20:36 GMT (via web):
More info: Unsubscribing to RecentChangesZC? worked for me to cancel out all the subscriptions I didn't want.

PieterB


Simon, 2002/06/07 01:16 GMT (via web):
I'm waiting for a day of unusual clarity or someone else to solve this, whichever comes first. I can easily reproduce now but don't understand what I'm seeing. Here's where I've got to - at the zeo debug prompt:
 app._p_jar.sync()
 Zope.debug('/zwiki/TestPage/isSubscriber?email=simon@joyful.com')
 app.zwiki.TestPage.isSubscriber(email="simon@joyful.com")

give different answers. The first one thinks TestPage.subscriber_list is ['simon@joyful.com'], as does zope when you're in your web browser. The second one thinks TestPage.subscriber_list is empty, which is the answer I expect.

Perhaps it will turn out to be one of those bad passing list-by-reference-instead-of-copying bugs that tend to bite me in python. That would be in [zwikidir/SubscriberList.py]?.


Simon, 2002/06/26 11:06 GMT (via web):
Found it! The subscriber_list was being set class-wide instead of per-instance. Cf http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/zwiki/zwiki/SubscriberList.py.diff?r1=1.26&r2=1.27


JohnGreenaway, 2002/06/26 12:31 GMT (via web):
Woohoo! It works. Well done Simon.


2002/06/26 12:58 GMT (via web):
Dare I say this is more exciting to me than the World Cup?


Simon Michael, 2002/06/27 10:39 GMT (via mail):
Yay! Thanks John. :)