2008-03-23T00:02:27  * dreimark misses where from gdl, is something like this http://www.astro.umass.edu/~tangsk/documents/idl_html_help/W7.html#wp679886 for tuples implemented and whats it's name
2008-03-23T00:02:58  <CIA-39> Thomas Waldmann <tw AT waldmann-edv DOT de> default * 3419:d6057ed413e6 1.7/ (MoinMoin/theme/__init__.py wiki/htdocs/common/js/common.js): show 'Comments' toggling link in edit bar only if the page really contains comments (ported from 1.6)
2008-03-23T00:02:59  <CIA-39> Thomas Waldmann <tw AT waldmann-edv DOT de> default * 3420:28dc1b4b53ad 1.7/MoinMoin/ (action/SyncPages.py wikisync.py): merged main
2008-03-23T00:03:14  <dreimark> cool
2008-03-23T00:04:08  <ThomasWaldmann> dreimark: do you need more than that?
2008-03-23T00:04:42  <dreimark> no I have missed to read all text,  nice :)
2008-03-23T00:12:57  <johill> uh
2008-03-23T00:13:04  <johill> now it doesn't show ?action=info for deleted pages
2008-03-23T00:13:44  <johill> wait
2008-03-23T00:13:46  <johill> that's a 1.7 bug
2008-03-23T00:15:37  <johill> ThomasWaldmann: which revision is running test17.mm?
2008-03-23T00:17:04  <ThomasWaldmann> some hours back
2008-03-23T00:17:09  <johill> hm ok
2008-03-23T00:17:10  <johill> thanks
2008-03-23T00:17:14  <johill> I'll poke elsewhere then
2008-03-23T00:17:33  <ThomasWaldmann> moin.py :)
2008-03-23T00:18:07  <johill> yeah was doing that
2008-03-23T00:18:16  <johill> probably doing something wrong or browser cache
2008-03-23T00:19:06  <ThomasWaldmann> btw, 1.6.2 today or tomorrow
2008-03-23T00:19:32  <johill> :)
2008-03-23T00:19:34  <johill> hrm
2008-03-23T00:19:40  <johill> xorAxAx: a deleted page exists right?
2008-03-23T00:19:51  <johill> because deleted is just metadata
2008-03-23T00:20:00  <xorAxAx> johill: depends on the level i fear
2008-03-23T00:20:25  <johill> external
2008-03-23T00:20:37  <johill> why would it depend on the level?
2008-03-23T00:20:47  <johill> would list_items give you items that don't exist?
2008-03-23T00:20:52  <johill> that'd be crappy
2008-03-23T00:20:57  <xorAxAx> because there is a storage backend, the item layer, a page layer, a user interface, a user
2008-03-23T00:21:08  <xorAxAx> no idea, too late to think about it :)
2008-03-23T00:22:30  <johill> oh I see
2008-03-23T00:22:40  <johill> on a Page.py level exists() can actually return False for a deleted item
2008-03-23T00:23:29  <xorAxAx> the page layer is legacy, though
2008-03-23T00:23:49  <CIA-39> Johannes Berg <johannes AT sipsolutions DOT net> default * 3720:5b376bbebe6b 1.7-storage-hwendel/MoinMoin/action/info.py: bugfix: allow info for deleted pages
2008-03-23T00:25:40  <CIA-39> Johannes Berg <johannes AT sipsolutions DOT net> default * 3721:99292a43d5d3 1.7-storage-hwendel/MoinMoin/storage/error.py: storage errors: add UnsupportedOperationError (for 1.6 backend)
2008-03-23T00:27:35  <dreimark> ThomasWaldmann: :)
2008-03-23T00:27:57  <CIA-39> Johannes Berg <johannes AT sipsolutions DOT net> default * 3722:3d74c9e2ad3d 1.7-storage-hwendel/MoinMoin/storage/ (5 files in 2 dirs): moin16 backend: don't allow removing revisions
2008-03-23T00:29:29  <johill> is there an iterator decorator?
2008-03-23T00:31:26  <dreimark> python 2.3 does not suport decorator or?
2008-03-23T00:32:04  <xorAxAx> sure, it does
2008-03-23T00:32:09  <xorAxAx> but not the decorator syntax :)
2008-03-23T00:32:59  <johill> never mind
2008-03-23T00:33:04  <johill> stupid thinking anyway
2008-03-23T00:33:09  <johill> I can just call __iter__() of my object
2008-03-23T00:45:50  <ThomasWaldmann> http://moinmo.in/MoinMoinBugs/1.6DevXapianNoWin32Symlink?action=AttachFile&do=view&target=FixXapianOnWindows.patch
2008-03-23T00:46:02  <ThomasWaldmann> any comments about that?
2008-03-23T00:46:31  <ThomasWaldmann> just commit it it move the touch stuff to util.filesys.touch?
2008-03-23T00:49:48  <johill> wow that's some horrible code for .touch()
2008-03-23T00:51:51  <ThomasWaldmann> win32 code :P
2008-03-23T00:54:31  <CIA-39> Johannes Berg <johannes AT sipsolutions DOT net> default * 3421:d71aa6092994 1.7/MoinMoin/search/_tests/test_search.py: queryparser tests: import QueryParser without detour
2008-03-23T00:55:26  <CIA-39> Johannes Berg <johannes AT sipsolutions DOT net> default * 3723:6a6490ac4a04 1.7-storage-hwendel/MoinMoin/search/_tests/test_search.py: fix queryparser test mismerge
2008-03-23T00:55:27  <CIA-39> Johannes Berg <johannes AT sipsolutions DOT net> default * 3724:4ae98ba289e8 1.7-storage-hwendel/MoinMoin/logfile/editlog.py: LocalEditLog: use backend instead of assuming all revisions [1, N] exist
2008-03-23T00:59:04  <johill> ahrg
2008-03-23T01:02:42  <kikka> hey.
2008-03-23T01:10:45  <CIA-39> Johannes Berg <johannes AT sipsolutions DOT net> default * 3725:93f13afeced7 1.7-storage-hwendel/MoinMoin/storage/backends/moin16.py: moin16 backend: fix list_revisions
2008-03-23T01:15:45  <johill> oh
2008-03-23T01:15:47  <johill> I see
2008-03-23T01:16:04  <johill> I knew I didn't like the save() thing with implicit metadata
2008-03-23T01:16:06  <johill> now it's biting me
2008-03-23T01:18:51  <johill> crap
2008-03-23T01:20:21  <johill> no the problem is another
2008-03-23T01:20:28  <johill> ahrg
2008-03-23T01:20:38  <johill> caused by the dumb separation of objects and functional stuff in backends
2008-03-23T01:23:42  <dreimark> gn
2008-03-23T01:29:32  <CIA-39> Thomas Waldmann <tw AT waldmann-edv DOT de> default * 2598:94ab734f6ae5 1.6/MoinMoin/ (PageEditor.py PageGraphicalEditor.py): fix too early message output in the editor
2008-03-23T01:29:37  <ThomasWaldmann> gn dreimark
2008-03-23T01:33:45  <johill> ahrg
2008-03-23T01:33:51  <johill> what sense does backend.create_revision make?
2008-03-23T01:33:58  <johill> what if you do create_revision and then never save it?
2008-03-23T01:39:31  <johill> oh the bogosities
2008-03-23T01:39:35  * johill goes to sleep instead
2008-03-23T01:40:56  <johill> why can you even save metadata and data separately
2008-03-23T01:41:19  <johill> though I guess that sort of makes sense
2008-03-23T08:45:45  <dreimark> moin
2008-03-23T08:45:52  <dreimark> ThomasWaldmann: something is wrong
2008-03-23T08:45:55  <dreimark> http://moinmo.in/ReimarBauer/UnderConstruction
2008-03-23T08:46:04  <dreimark> shows no Comment in Edit bar
2008-03-23T12:01:25  <ThomasWaldmann> dreimark: http://test16.moinmo.in/TestWiki16
2008-03-23T12:01:57  * ThomasWaldmann will also update the static data for other sites soon.
2008-03-23T12:04:37  * ThomasWaldmann .oO(looks like winter outside :| )
2008-03-23T12:05:20  <dreimark> yeah, you are right, (I was one step ahead)
2008-03-23T12:05:36  <dreimark> that's a funny mistake btw. http://test16.moinmo.in/ReimarBauer/TestSeite
2008-03-23T12:08:17  <ThomasWaldmann> unbalanced inline markup X)
2008-03-23T12:09:44  <dreimark> yeah, it is no bug. but the resulting sentence can become very funny
2008-03-23T12:09:50  <ThomasWaldmann> iirc we require blanks around */ (and /* )
2008-03-23T12:11:06  <dreimark> s/(and /* )/(and */ )/
2008-03-23T12:50:50  <CIA-39> Thomas Waldmann <tw AT waldmann-edv DOT de> default * 2599:d204199bae98 1.6/ (MoinMoin/action/newpage.py docs/CHANGES): fix quoting in newpage action (backport from 1.7)
2008-03-23T13:18:35  <CIA-39> Reimar Bauer <rb.proj AT googlemail DOT com> default * 3422:b9c90178b93a 1.7/MoinMoin/macro/ (Hits.py _tests/test_Hits.py): macro.Hits: refactored
2008-03-23T13:35:39  <johill> wow
2008-03-23T13:35:45  <johill> storage branch is totally f'ed wrt. concurrency
2008-03-23T13:36:00  <johill> and if two people try to edit at the same time it
2008-03-23T13:36:04  <johill>  - first waits for the lock
2008-03-23T13:36:20  <johill>  - then shows an exception 'already locked' to the second one when the first one saves
2008-03-23T13:36:24  <johill> wtf
2008-03-23T13:36:41  <johill> I knew it had concurrency problems
2008-03-23T13:36:43  <johill> but that bad?!
2008-03-23T13:37:11  <xorAxAx> hmm?
2008-03-23T13:37:15  <xorAxAx> can you elaborate?
2008-03-23T13:37:40  <johill> well
2008-03-23T13:37:41  <johill> I did this
2008-03-23T13:37:43  <johill> create a page
2008-03-23T13:37:44  <johill> save
2008-03-23T13:37:49  <johill> edit in one window
2008-03-23T13:37:54  <johill> try editing in another browser
2008-03-23T13:38:05  <johill> -> no editor comes up, second browser just hangs
2008-03-23T13:38:10  <johill> save in first window
2008-03-23T13:38:18  <xorAxAx> huh
2008-03-23T13:38:19  <johill> -> second browser reacts, exception "already locked" comes up
2008-03-23T13:38:24  <xorAxAx> that sounds broken, yes
2008-03-23T13:38:29  <johill> it is worse
2008-03-23T13:38:35  <johill> even if that was fixed
2008-03-23T13:38:39  <johill> it has concurrency issues on a thread level
2008-03-23T13:38:48  <johill> because of the way create_revision works
2008-03-23T13:38:53  <johill> create_revision works like this
2008-03-23T13:39:00  <johill> eh
2008-03-23T13:39:03  <johill> is used like this:
2008-03-23T13:39:08  <johill>  - get current revision number
2008-03-23T13:39:15  <johill>  - create revision (current + 1)
2008-03-23T13:39:20  <johill>  - get object for current + 1
2008-03-23T13:39:24  <xorAxAx> yes, that sounds broken :)
2008-03-23T13:39:24  <johill>  - ...
2008-03-23T13:39:30  <johill>  - save current + 1
2008-03-23T13:39:32  <johill> so
2008-03-23T13:39:38  <xorAxAx> is that code in Page.py?
2008-03-23T13:39:43  <johill> it's by design
2008-03-23T13:39:45  <johill> in ItemCollection
2008-03-23T13:39:48  <xorAxAx> ah
2008-03-23T13:40:02  <johill> I had a feeling that returning objects would have been sane
2008-03-23T13:40:17  <johill> I had no idea that not doing it resulted in stupid problems like this
2008-03-23T13:40:46  <johill> problem is that create_revision *by design* has to store that revision
2008-03-23T13:40:51  <johill> althoug *no data* for it exists at that point
2008-03-23T13:41:20  <johill> what it should do, imnsho, is just return a revision object with (revno=current+1, isnew=true)
2008-03-23T13:41:20  <xorAxAx> well, thats fine, no?
2008-03-23T13:41:37  <johill> no
2008-03-23T13:41:43  <johill> because backends allow editing old revisions
2008-03-23T13:41:48  <xorAxAx> hmm
2008-03-23T13:42:02  <xorAxAx> revision object with (revno=current+1, isnew=true) would mean that you might get a conflict later on?
2008-03-23T13:42:13  <johill> when trying to save it, yes
2008-03-23T13:42:27  <johill> if somebody else beat you to saving current+1
2008-03-23T13:42:36  <johill> but right now at that point current is already incremented
2008-03-23T13:42:53  <johill> so if the first threads creates revision 2 and the second thread creates revsion 3 they'll both happily save it later
2008-03-23T13:43:03  <johill> with no chance of checking that they actually conflicted
2008-03-23T13:43:04  <xorAxAx> hmm, that "beats you" shouldnt really happen in practice so this way should be fine
2008-03-23T13:43:17  <johill> that can definitely happen in multi-threaded servers
2008-03-23T13:43:37  <xorAxAx> yes, but pretty seldomly. so you dont need to rollback and retry in the code
2008-03-23T13:43:46  <johill> eh?
2008-03-23T13:43:52  <johill> this is about data consistency
2008-03-23T13:43:59  <johill> seldomly doesn't cut it
2008-03-23T13:44:07  <xorAxAx> the point is not that this is not necessary
2008-03-23T13:44:13  <xorAxAx> but the way to handle conflicts
2008-03-23T13:44:27  <xorAxAx> and i was just saying that moin doesnt need to replay :)
2008-03-23T13:44:32  <johill> well yes
2008-03-23T13:44:43  <johill> but it needs to be able to detect conflicts even in a threaded server
2008-03-23T13:44:48  <xorAxAx> yes
2008-03-23T13:44:48  <johill> and you currently cannot do that
2008-03-23T13:44:50  <xorAxAx> very important
2008-03-23T13:44:57  <johill> it's just impossible with the storage design
2008-03-23T13:45:34  <johill> because create_revision increments current
2008-03-23T13:45:50  <johill> (which is by design)
2008-03-23T13:46:14  <johill> actually, I'm explaining it wrongly
2008-03-23T13:46:28  <johill> let me write a text file explaining it
2008-03-23T13:46:45  <kikka> Goood Morning, #m-d!
2008-03-23T13:48:21  <johill> actually, I think it may be possible to fix it by working around the backend design in the upper code
2008-03-23T13:48:30  <johill> but that's pretty weird
2008-03-23T13:50:30  <johill> because then you have two failure points
2008-03-23T13:50:43  <johill> which both mean conflict
2008-03-23T13:51:07  <johill> and the current code is wrong anyway because it does the straight-forward thing
2008-03-23T13:51:16  <johill> which doesn't take threading into account
2008-03-23T13:51:35  <johill> so I guess what I'm saying is that by a few backend API changes the straight-forward thing would actually work
2008-03-23T13:51:43  <johill> and make the upper layers *much* easier
2008-03-23T13:52:12  <johill> anyway, I have to go, will think about it a bit more
2008-03-23T14:53:16  <lanius> johill: why is it weired, there is metadata which you can change with each revision and metadata which applies for all revisions
2008-03-23T14:53:52  * xorAxAx cant login to moinmaster, its logging me out every time
2008-03-23T14:54:43  <xorAxAx> removing cookies helped, sigh
2008-03-23T15:03:14  <lanius> johill: please don't mess up the code
2008-03-23T15:03:29  <lanius> johill: removing revisions is a completly legal operation on backend level
2008-03-23T15:03:35  <lanius> johill: and has nothing to do with the editlog
2008-03-23T15:04:06  <lanius> johill: and list_revisions has nothing to do with the editlog
2008-03-23T15:04:18  <lanius> johill: the editlog is just a faster way to access the news
2008-03-23T15:05:23  <lanius> johill: and action?info should'nt work for deleted pages, because they don't exist on that level
2008-03-23T15:05:47  <lanius> johill: before you touched the code moin1.7 backend was working quite fine
2008-03-23T15:06:32  <lanius> johill: please think a few minutes more before you change the code
2008-03-23T15:09:38  <xorAxAx> :-(
2008-03-23T15:57:19  <starshine> moin
2008-03-23T16:23:35  <starshine> graphics work this morning?
2008-03-23T16:36:43  <ThomasWaldmann> hi starshine
2008-03-23T16:37:09  <ThomasWaldmann> http://moinmo.in/MoinMoinBugs/1.7IconsForAddMsgLookBad that's the stuff i meant recently.
2008-03-23T16:37:44  <starshine> ok let's see if I can get to the site today
2008-03-23T16:38:02  <starshine> spam has been so bursty I've been having occasional bad-link moments.
2008-03-23T16:43:51  <ThomasWaldmann> starshine: huh, you get so much spam your internet link breaks down? :|
2008-03-23T16:47:26  <starshine> ThomasWaldmann: my link is about 2x modem speed.  Someone else I know with a much fatter link has been having oom-killer class outages.  I'm doign alright.
2008-03-23T16:48:07  <starshine> anyways I've got the page up *reads*
2008-03-23T17:13:15  <starshine> hrm guess I need to fetch 1.7 ?
2008-03-23T17:17:25  <CIA-39> Don Reid <dreid@computroix.com> default * 2600:8864ee484084 1.6/MoinMoin/ (search/builtin.py support/xapwrap/index.py): Allow Xapian to run under Windows
2008-03-23T17:17:26  <CIA-39> Thomas Waldmann <tw AT waldmann-edv DOT de> default * 2601:e449b2ae18ba 1.6/MoinMoin/ (search/builtin.py util/filesys.py): move platform dependent filesystem routines to util.filesys
2008-03-23T17:19:02  <ThomasWaldmann> starshine: test17.moinmo.in has all the stuff (just use the urls from the css there or work there if you want to see the problem)
2008-03-23T17:20:41  <starshine> ok
2008-03-23T17:21:16  <johill> lanius: let me roll that up backwards
2008-03-23T17:21:53  <johill> lanius: action=info *MUST* work for deleted pages, otherwise you cannot restore a deleted pages
2008-03-23T17:22:30  <johill> lanius: removing revisions isn't possible in moin16 backend because the editlog stores metadata
2008-03-23T17:22:50  <johill> the editlog isn't just a way to access things faster, and list_revisions must also list deleted revisions at that level
2008-03-23T17:23:19  <starshine> ThomasWaldmann: having trouble getting to pics inside the theme, must mentally reconstruct URL..
2008-03-23T17:26:39  <johill> lanius: clearly, you haven't thought about how the edit log influences metadata and revisioning
2008-03-23T17:27:09  <xorAxAx> johill: the edit log is a cache
2008-03-23T17:27:23  <xorAxAx> so it shouldnt influence anything :)
2008-03-23T17:27:39  <starshine> lanius: the editlog is definitely *not* just a faster way to see the RecentChanges
2008-03-23T17:27:58  <xorAxAx> also you seem to have broken the tests and used that as a reason to remove a backend
2008-03-23T17:28:09  <xorAxAx> you should have noticed that earlier ...
2008-03-23T17:28:16  <starshine> lanius: it stores *who* made them, which the files alone would only have a timestamp.
2008-03-23T17:28:17  <johill> xorAxAx: no, it's not a cache
2008-03-23T17:28:28  <johill> xorAxAx: the 'who edited' metadata is stored only there
2008-03-23T17:28:35  <ThomasWaldmann> starshine: http://test17.moinmo.in/moin_static170/modern/img/ they are there
2008-03-23T17:28:36  <johill> (you're referring to the global edit log, I'm talking about the local edit log)
2008-03-23T17:28:45  <xorAxAx> johill: umm, it should be revision metadata
2008-03-23T17:28:50  <johill> it is
2008-03-23T17:28:51  <starshine> ThomasWaldmann: much appreciated :)
2008-03-23T17:28:58  <johill> but in the moin16 backend it's stored in the local edit log
2008-03-23T17:28:58  <xorAxAx> johill: revision metadata != editlog
2008-03-23T17:29:08  <xorAxAx> johill: you seem to mix api and implementation
2008-03-23T17:29:15  <johill> no
2008-03-23T17:29:25  <johill> quite the contrary
2008-03-23T17:29:27  <johill> lanius is
2008-03-23T17:29:39  <johill> he's making the upper level code assume that all revisions 1-N exist
2008-03-23T17:29:46  <johill> which is quite wrong according to his own words
2008-03-23T17:29:53  <ThomasWaldmann> starshine: i think the icons are also use somewhere else, so a minimal fix is most welcome
2008-03-23T17:31:43  <starshine> in the odl backend it's certainly wrong; I know lots of people who'd zip up the really old ones, for space, and not expect to access them directly
2008-03-23T17:31:45  <johill> the local edit log stores revision meta data
2008-03-23T17:31:47  <starshine> *old
2008-03-23T17:32:23  <xorAxAx> johill: please clearly refer to the layer
2008-03-23T17:32:27  <johill> moin16 backend
2008-03-23T17:32:29  <xorAxAx> johill: upper level == itemcollection?
2008-03-23T17:32:39  <johill> upper level there was MoinMoin.editlog
2008-03-23T17:32:46  <johill> whichc uses the item colleciton
2008-03-23T17:32:53  <xorAxAx> editlog is legacy
2008-03-23T17:32:56  <johill> no
2008-03-23T17:32:59  <xorAxAx> sure
2008-03-23T17:33:01  <johill> it's using the backend now
2008-03-23T17:33:05  <johill> well
2008-03-23T17:33:09  <xorAxAx> that doesnt mean that it should go away :)
2008-03-23T17:33:09  <johill> ok if you say editlog is legacy
2008-03-23T17:33:10  * starshine bookmarks tricky URL
2008-03-23T17:33:13  <lanius> johill: the revision thing was clearly wrong, yes
2008-03-23T17:33:21  <lanius> johill: but with the editlog you mix things
2008-03-23T17:33:28  <lanius> johill: the new api states that the editlog is metadata
2008-03-23T17:33:34  <johill> exactly
2008-03-23T17:33:37  <lanius> johill: but for the moin16 backend it must be emulated with the editlog of course
2008-03-23T17:33:41  <johill> so you cannot remove a revision in the moin16 backend
2008-03-23T17:33:44  <lanius> johill: because that is the way it is until now
2008-03-23T17:33:47  <lanius> johill: sure you can
2008-03-23T17:33:50  <johill> no
2008-03-23T17:33:52  <lanius> johill: because the editlog will be updated
2008-03-23T17:33:59  <johill> not deleted
2008-03-23T17:34:01  <johill> from
2008-03-23T17:34:22  <lanius> johill: really deleted is deleted
2008-03-23T17:34:25  <lanius> johill: nothing to store there
2008-03-23T17:34:26  <johill> I know
2008-03-23T17:34:34  <johill> but there's still the stuff in the edit log after that
2008-03-23T17:34:43  <lanius> johill: so what
2008-03-23T17:34:48  <johill> which you worked around by assuming that all revisions exist
2008-03-23T17:34:57  <lanius> i don't see the conneciton
2008-03-23T17:35:03  <johill> I cansee that
2008-03-23T17:35:17  <johill> but I don't know how to explain it any better
2008-03-23T17:35:29  <johill> the problem is that DELETED metadata is indicated by a missing data file
2008-03-23T17:35:48  <johill> maybe I can tackle the problem from another side
2008-03-23T17:35:58  <johill> xorAxAx says MoinMoin.editlog is legacy
2008-03-23T17:36:00  <lanius> johill: you mix DELETED and really deleted
2008-03-23T17:36:03  <johill> no
2008-03-23T17:36:15  <lanius> DELETED is indicated by a missing data file because that is the way moin16 did it
2008-03-23T17:36:17  <johill> yes
2008-03-23T17:36:18  <johill> I know
2008-03-23T17:36:25  <johill> but list_revisions must list DELETED revisions
2008-03-23T17:36:32  <lanius> of course
2008-03-23T17:36:35  <johill> well
2008-03-23T17:36:41  <lanius> but that is not possible
2008-03-23T17:36:41  <johill> go look at your moin16 code now
2008-03-23T17:36:54  <lanius> and it is not a big issue at all
2008-03-23T17:36:55  <johill> return sorted(listdir())
2008-03-23T17:36:58  <lanius> because this behaviour is just broken in moin16
2008-03-23T17:36:59  <johill> of course it is
2008-03-23T17:37:03  <lanius> and can't be fixed
2008-03-23T17:37:07  <johill> sure can
2008-03-23T17:37:19  <johill> you're too much in love with your 'backend is a general database' idea
2008-03-23T17:37:36  <lanius> because i'm thinking of supporting the moin16 backend
2008-03-23T17:37:43  <lanius> and going ahead for a better one
2008-03-23T17:37:55  <johill> unrelated
2008-03-23T17:38:00  <lanius> no
2008-03-23T17:38:05  <johill> look
2008-03-23T17:38:10  <johill> in your code
2008-03-23T17:38:16  <johill> if I do not use MoinMoin.editlog
2008-03-23T17:38:26  <johill> how do I get the list for action=info?
2008-03-23T17:38:39  <lanius> you loop through all revisions
2008-03-23T17:38:47  <lanius> of an Item
2008-03-23T17:38:49  <johill> which will not give me deleted revisions, so it's broken
2008-03-23T17:38:56  <johill> I mean, DELETED revisions
2008-03-23T17:38:59  <starshine> lanius: you can't guarantee doing that if some are deleted?
2008-03-23T17:39:01  <johill> (not removed)
2008-03-23T17:39:19  <johill> starshine: it is possible but not with the way he does things
2008-03-23T17:39:22  <lanius> yes this is definitevly broken
2008-03-23T17:39:26  <johill> so
2008-03-23T17:39:27  <lanius> but there is no sane way to fix it
2008-03-23T17:39:30  <johill> the solution is to use the edit-log
2008-03-23T17:39:32  <lanius> no
2008-03-23T17:39:35  <johill> sure
2008-03-23T17:39:38  <lanius> no
2008-03-23T17:39:38  <johill> it trades off at another spot
2008-03-23T17:39:42  <starshine> "deleted" --> marked as >deleted< in RecentChanges, able to be restored by and admin
2008-03-23T17:39:50  <starshine> he can't restore what he can never see again
2008-03-23T17:39:54  <johill> starshine: that's what we're referring to as DELETED
2008-03-23T17:39:56  <starshine> it must still be permitted
2008-03-23T17:40:00  <johill> starshine: actually removed is completely gone
2008-03-23T17:40:01  <xorAxAx> gah
2008-03-23T17:40:07  <xorAxAx> please increase the line length
2008-03-23T17:40:07  <johill> starshine: yes, but his code can't do that
2008-03-23T17:40:11  <starshine> johill: ok you and I are on same page then :)
2008-03-23T17:40:26  <johill> starshine: :)
2008-03-23T17:41:00  <lanius> johill: and first of all it has nothing to do with remove_revision which you removed
2008-03-23T17:41:00  <johill> lanius: using the edit-log to get the existing revisions trades off at "we can see DELETED revisions" against "we cannot actually remove revisions"
2008-03-23T17:41:09  <johill> given that we don't actually ever remove revisions, that's not a problem
2008-03-23T17:41:24  <johill> (which is why I'm saying that you love your general databse so much that you lost the actual target)
2008-03-23T17:41:49  <johill> lanius: also, the MoinMoin.editlog legacy code *MUST* implement things the same way you would do it without the edit log
2008-03-23T17:41:53  <johill> that's the only sane way forward
2008-03-23T17:41:56  <lanius> johill: but for administrative issues you might wan't to actually delete revisions
2008-03-23T17:42:00  <lanius> johill: spam e.g.
2008-03-23T17:42:01  <starshine> I thought the point of a moin16 backend was you could use a legacy storage set?
2008-03-23T17:42:11  <johill> lanius: you can't do that right now either
2008-03-23T17:42:19  <lanius> johill: of course you can with remove_revision
2008-03-23T17:42:21  <johill> starshine: yeah, so it has to go to some effort
2008-03-23T17:42:29  <johill> lanius: right now == in moin 1.6 as released
2008-03-23T17:42:45  <lanius> johill: that's no reason to remove it
2008-03-23T17:42:50  <lanius> johill: now you can
2008-03-23T17:42:52  <johill> lanius: yes, you're supposed to be able to do it with remove_revision, but the moin16 backend need not support it
2008-03-23T17:42:55  <johill> yes
2008-03-23T17:42:57  <johill> I'm not saying "remove it"
2008-03-23T17:42:59  * starshine plans to test this code heavily from the sysadmin-end when someone claims it's done...
2008-03-23T17:43:00  <lanius> it did until you removed it
2008-03-23T17:43:06  <johill> I'm saying "dont implement in moin 1.6"
2008-03-23T17:43:12  <johill> eh, "don't implement in moin16 backend"
2008-03-23T17:43:28  <johill> lanius: no, it did not support it properly
2008-03-23T17:43:43  <johill> lanius: you could still ask for revision 7 after it was removed and get metadata for it from the edit-log
2008-03-23T17:43:43  <lanius> it did
2008-03-23T17:43:46  <johill> which is totally borked
2008-03-23T17:44:00  <johill> I know there has to be a trade off
2008-03-23T17:44:04  <johill> you're just making it at the wrong spot
2008-03-23T17:44:13  <johill> there is no need for moin16 backend to support removing things
2008-03-23T17:44:24  <johill> yet it has to be able to represent deleted revisions in list_revisions
2008-03-23T17:44:31  <johill> that's a must, otherwise action=info is borked
2008-03-23T17:44:37  <lanius> both things have nothing to do with each other
2008-03-23T17:44:41  <johill> of course they do
2008-03-23T17:44:56  <johill> because moin16 backend cannot actually distinguish between deleted and removed
2008-03-23T17:44:58  <lanius> no, because a revision that was removed with remove_revision should not appear in action=info anymore
2008-03-23T17:45:19  <johill> lanius: correct
2008-03-23T17:45:22  <johill> lanius: but it will
2008-03-23T17:45:29  <johill> (with your current code)
2008-03-23T17:45:37  <lanius> then it has to be fixed
2008-03-23T17:45:41  <johill> that's all I'm saying
2008-03-23T17:45:45  <lanius> but not removed without any comment
2008-03-23T17:45:52  <johill> you don't understand
2008-03-23T17:45:57  <johill> you cannot fix it in the moin16 backend
2008-03-23T17:46:08  <johill> because it cannot distinguish between deleted and removed
2008-03-23T17:46:09  <starshine> lanius: in moin 1.6 and earlier "remove" was only possible by means of sysadmin invading the filesystem.
2008-03-23T17:46:39  <johill> starshine: yeah, that'll still remain possible, of course, so all I'm saying really is that the moin16 backend will not support that action even though other backends might
2008-03-23T17:46:44  <lanius> and removing the tests for removal from test_backends_meta and test_external is completly wrong
2008-03-23T17:46:59  <johill> you know
2008-03-23T17:47:04  <starshine> editolog would never know of this unless he also made considerable effort to also edit that file, which would be hard because of moinstyle timestamps.  so moin16 backend does not need to concern about that
2008-03-23T17:47:15  <johill> if you're going to get so hung up about code changes then we can't talk about design
2008-03-23T17:47:26  <johill> we can revert all my changes if that makes you feel better
2008-03-23T17:47:33  <johill> I don't particularly care
2008-03-23T17:47:36  <starshine> *sigh*
2008-03-23T17:47:48  <xorAxAx> johill: he is pretty much right
2008-03-23T17:47:49  <lanius> no what makes me feel better is if you write down what you are changing and why
2008-03-23T17:47:58  <xorAxAx> removing tests is no way to discuss about design
2008-03-23T17:48:02  <starshine> actually you do, this is why it's so annoying that one-true-way style of design is being applied
2008-03-23T17:48:28  <starshine> lanius: and when you disagree with it don't we get to debate and design the new right thing together?
2008-03-23T17:48:36  <lanius> right
2008-03-23T17:48:43  <lanius> but before making changes
2008-03-23T17:48:51  <starshine> so you should not cling so hard to claim perfection yet
2008-03-23T17:48:53  <starshine> um
2008-03-23T17:49:00  <lanius> there is no perfection
2008-03-23T17:49:03  <starshine> that's why it's a dev branch... so we can test...
2008-03-23T17:49:08  <lanius> i'm just saying that i thought a lot more about the things last year then you
2008-03-23T17:49:17  * starshine isn't clear why she has to explain this to you
2008-03-23T17:49:18  <lanius> so please lets first discuss
2008-03-23T17:49:26  <johill> obviously you haven't considered how it actually has to work
2008-03-23T17:49:31  <lanius> but this branch was in a pretty good shape
2008-03-23T17:49:37  <johill> you know
2008-03-23T17:49:39  <johill> seriously
2008-03-23T17:49:39  <starshine> if there is no perfection then your personal sense of design is not allowed to be considered perfect either
2008-03-23T17:49:47  <johill> I'm going to revert all my few days worth of code changes
2008-03-23T17:49:50  <johill> and then maybe we can discuss
2008-03-23T17:50:02  <starshine> "shape" isn't required.  working for unknown users as features is claimed, is.
2008-03-23T17:50:03  <lanius> you don't need to revert everything
2008-03-23T17:50:18  <lanius> starshine: ?
2008-03-23T17:50:21  <starshine> feature claimed is "moin16 backend means you can use the old one like before"
2008-03-23T17:50:32  <lanius> and it worked
2008-03-23T17:50:36  <johill> and "like before" means "like before"
2008-03-23T17:50:37  <starshine> complaint here today is, as you have painted, no you cannot.
2008-03-23T17:50:53  <johill> and not necessarily with extra new features
2008-03-23T17:50:59  <johill> but you're actually introduced big problems with it
2008-03-23T17:51:05  <johill> e.g. not listing deleted revisions
2008-03-23T17:51:05  <starshine> you are NOT permitted to redesign moin16 backend's misfeatures, only implement them a new way.
2008-03-23T17:51:07  <lanius> you have not yet pointed a feature to me which worked before and not now
2008-03-23T17:51:11  <xorAxAx> johill: also you should have started with a branch, we are in dvcs world ... might have made it a bit easier to follow your learning process
2008-03-23T17:51:48  <johill> like I said, let me revert the whole damn thing if you get so hung up about me committing to your precious codee
2008-03-23T17:51:52  <starshine> lanius: yes he has.  he says if you DELETE a page, in your form we lose all access to its action=info data details
2008-03-23T17:51:56  <xorAxAx> johill: its not about that
2008-03-23T17:52:01  <johill> you're complaining about process
2008-03-23T17:52:03  <starshine> which in true moin 1.6 still exist.
2008-03-23T17:52:03  <johill> not about design
2008-03-23T17:52:03  <xorAxAx> no
2008-03-23T17:52:10  <johill> of course you are!
2008-03-23T17:52:11  <xorAxAx> johill: well, partly, removing tests is evil
2008-03-23T17:52:11  <lanius> starshine: because that was how it worked before
2008-03-23T17:52:24  <xorAxAx> and removing code because tests broke is evil as well, because you broke the
2008-03-23T17:52:24  <johill> the whole fact that we've been talking about code changes for the past 5 minutes says so
2008-03-23T17:52:25  <xorAxAx> m
2008-03-23T17:52:30  <starshine> lanius: my experience says differently.
2008-03-23T17:53:02  <starshine> (my experience of moin 1.6. I have none, of 1.7, and am taking you both on faith about the respective purity of your code bricks.)
2008-03-23T17:53:04  <johill> xorAxAx: I can admit to having made mistakes. actually, moin17 backend probably still works but I was getting tired of updating the same code as in moin16 since much of it was copied
2008-03-23T17:53:14  <lanius> starshine: go ahead and do the following
2008-03-23T17:53:16  <lanius> starshine: create a page
2008-03-23T17:53:18  <lanius> starshine: delete it
2008-03-23T17:53:20  <johill> starshine: moin 1.7 doesn't behave any different from 1.6
2008-03-23T17:53:23  <lanius> starshine: try to call action=info
2008-03-23T17:53:28  <lanius> starshine: it will tell you the page does not exist
2008-03-23T17:53:28  <johill> lanius: I have just done that
2008-03-23T17:53:32  <johill> lanius: NOOO
2008-03-23T17:53:38  <starshine> lanius: I am only willing to perform this test on somethin which was a true moin 1.6
2008-03-23T17:53:44  <lanius> starshine: sure
2008-03-23T17:53:46  <johill> lanius: http://test17.moinmo.in/LalalaToDelete
2008-03-23T17:53:56  <xorAxAx> ?
2008-03-23T17:53:58  <xorAxAx> test17?
2008-03-23T17:54:03  <xorAxAx> which branch does it run?
2008-03-23T17:54:06  <starshine> you do not get to wriggle out of offering sysadmins the chance to move their 500+ pages without change and keep going
2008-03-23T17:54:19  <johill> xorAxAx: 17 main, not -storage
2008-03-23T17:54:29  <xorAxAx> ok
2008-03-23T17:54:32  <johill> which is not really differnet from 1.6
2008-03-23T17:54:47  <johill> lanius: how obvious can it be. if you removed a page you have to be able to recall old revisions
2008-03-23T17:55:02  <johill> so you can restore the page
2008-03-23T17:55:08  <johill> I'm not sure what got you thinking otherwise
2008-03-23T17:55:20  <lanius> johill: i'm not caring of how obvious it is, but of how it worked before
2008-03-23T17:55:29  <johill> well like I'm pointing out, that's how it works
2008-03-23T17:55:35  <johill> and you borked it
2008-03-23T17:55:49  <johill> if you want to see it in 1.6
2008-03-23T17:55:59  <johill> here's a link: http://master.moinmo.in/xegon10
2008-03-23T17:56:39  <johill> please take a look, it is as expected
2008-03-23T17:56:45  <johill> maybe then we can talk
2008-03-23T17:56:56  <starshine> as a *web visitor* I don't care as long as the same front-end features work like before.  as a *syadmin* I care that if I wanted old style backend all the files really do look the same, so my cronjobs and other oddities would keep working
2008-03-23T17:57:29  <lanius> johill: ok i see,
2008-03-23T17:57:36  <starshine> I have the impression that each of you two has come to it from only one of these aspects;   but *both* are required or it cannot pass.
2008-03-23T17:57:43  <lanius> johill: but that is not a big issue, it can easily be fixed in storage to show it as well
2008-03-23T17:57:56  <johill> no, it can't easily be fixed
2008-03-23T17:58:02  <johill> not as long as you allow remove_revision
2008-03-23T17:58:11  <johill> and making discontiguous revision numbers
2008-03-23T17:58:28  <lanius> where is the problem with that
2008-03-23T17:58:34  <starshine> lanius: do you have access to a true moin 1.6 environment for front-end study ?
2008-03-23T17:58:39  <lanius> starshine: no
2008-03-23T17:58:41  <johill> that you've been saying it must support that?!
2008-03-23T17:58:58  <lanius> yes
2008-03-23T17:59:02  <lanius> where is the problem with that
2008-03-23T17:59:19  <starshine> lanius: old moin did not have a true remove via moin
2008-03-23T17:59:20  <johill> that moin16 uses a non-existing data file to indicate DELETED metadata
2008-03-23T17:59:23  <johill> rather than a true remove
2008-03-23T17:59:25  <lanius> starshine: i know
2008-03-23T17:59:31  <lanius> johill: i know
2008-03-23T17:59:36  <starshine> ergo adding it is adding a feature = break the modus of "its the same"
2008-03-23T17:59:39  <johill> tell me how to implement it?
2008-03-23T17:59:46  <lanius> starshine: no no
2008-03-23T17:59:52  <johill> great if you acn prove me wrong!
2008-03-23T18:00:10  <starshine> lanius: old "delete" means same as KDE throw in trash, it's still there.
2008-03-23T18:00:12  <lanius> starshine: feature same was no the condition
2008-03-23T18:00:17  <starshine> well
2008-03-23T18:00:17  <lanius> starshine: backwards compatibility was
2008-03-23T18:00:29  <starshine> I'm telling you that the world of moin users will make that mental leap
2008-03-23T18:00:41  <lanius> starshine: remove_revision is never called from the frontend
2008-03-23T18:00:51  <lanius> starshine: it's just for you admins
2008-03-23T18:00:56  <starshine> to *them* 'backward compatible" means - I can put in my backwards way, and stay using it *as is*
2008-03-23T18:00:58  <lanius> starshine: who otherwise would have to delete it manually
2008-03-23T18:01:06  <johill> starshine: exactly the idea
2008-03-23T18:01:09  <lanius> starshine: you can
2008-03-23T18:01:38  <johill> lanius: please tell me how to implement remove and list_revisions properly at the same time
2008-03-23T18:01:45  <starshine> lanius: if you replace 'deleted' feature with true remove and you don't have a plain deleted/restorable feature they'll get out the pitchforks :/
2008-03-23T18:01:57  <lanius> starshine: i don't replace it
2008-03-23T18:02:03  <lanius> starshine: i offer both
2008-03-23T18:02:05  <johill> starshine: he just adds remove
2008-03-23T18:02:21  <starshine> lanius: then how is it intended that admins who did 'deleted' get to put it back?
2008-03-23T18:02:24  <johill> starshine: all I'm saying is that due to the way the moin16 backend works, it cannot support both, so it should not support remove ratehr than not support deleted
2008-03-23T18:02:32  <lanius> johill: i can't tell you how to implement it properly, but i can tell you how to implement it in a 1.6 manner
2008-03-23T18:02:40  <johill> lanius: shoot
2008-03-23T18:02:54  <starshine> current front end interface lists revisions including 'deleted' ones (to admins anyway) so wants to restore
2008-03-23T18:02:55  <lanius> starshine: damn, it is a NEW feature
2008-03-23T18:02:58  <lanius> starshine: which wasn't there before
2008-03-23T18:03:03  <lanius> starshine: so they don't expect anything from it
2008-03-23T18:03:13  <starshine> lanius: both types of deletion, it's ok to have, but
2008-03-23T18:03:23  <johill> exactly my point btw, moin16 backend need not support true removal because nobody expects it
2008-03-23T18:03:31  <starshine> yes, they will, because the only expectable users of moin16 backend are ALREADY users
2008-03-23T18:03:35  <lanius> johill: but it doesn't hurt anyway
2008-03-23T18:03:47  <starshine> and they will hug their ability to restore pages
2008-03-23T18:03:55  <lanius> nonono that's insane
2008-03-23T18:04:11  <xorAxAx> note that, regardless of any purge support, the moin16 backend must handle editlog entries that look like purged revisions because moin 1.6 did as well
2008-03-23T18:04:14  <lanius> previously they have deleted spam pages by hand
2008-03-23T18:04:17  <starshine> whether it's insane or not, some managers are like this :)
2008-03-23T18:04:20  <lanius> now they use the remove_revision feature
2008-03-23T18:04:33  <lanius> and it has nothing to do with the other delete feature
2008-03-23T18:04:36  <johill> xorAxAx: yeah, that's true, but that's not really that much of a problem
2008-03-23T18:04:36  <starshine> lanius: no, honest, some never ever used the backend
2008-03-23T18:04:43  <lanius> ?
2008-03-23T18:04:47  <xorAxAx> dont let starshine confuse you :)
2008-03-23T18:05:00  * starshine sighs
2008-03-23T18:05:19  <lanius> ok let's stop here
2008-03-23T18:05:20  <johill> xorAxAx: the problem is that moin16 cannot possibly distinguish between removed and delted
2008-03-23T18:05:21  <lanius> and do the following
2008-03-23T18:05:33  <xorAxAx> johill: write a failing test case
2008-03-23T18:05:53  <johill> xorAxAx: can't really do that, it's a design problem
2008-03-23T18:05:58  <lanius> johill: please revert the remove revision and list_revision things
2008-03-23T18:06:00  <lanius> then
2008-03-23T18:06:06  <lanius> both you and me think about it again
2008-03-23T18:06:19  <lanius> and then we discuss it again
2008-03-23T18:06:27  <xorAxAx> well, if the design has a sane idea of deleted flags, a test should be expressable
2008-03-23T18:06:43  <xorAxAx> lanius: sounds like a plan
2008-03-23T18:06:46  <johill> xorAxAx: part of the problem is that list_revisions and the legacy editlog behave differently
2008-03-23T18:07:16  <starshine> ok doublecheckign the proposal - both guys back out their code, both write a test case which passes for their respective feature (two features total:  deleted/restorable and remove/gone-forever).
2008-03-23T18:08:00  <lanius> starshine: my test cases are in the repository
2008-03-23T18:08:13  <xorAxAx> lanius: or, even, were :-)
2008-03-23T18:08:16  <starshine> possibly more than one test case, because one of the things *I* expect from it claiming to be a 1.6 pure backend, is that I could trade a moin data tree from it back into a true moin 1.6 and have it not break anything.
2008-03-23T18:08:27  <lanius> starshine: right
2008-03-23T18:08:35  <lanius> starshine: that's what i have been testing all over the time
2008-03-23T18:08:43  <starshine> well
2008-03-23T18:08:51  <CIA-39> Johannes Berg <johannes AT sipsolutions DOT net> default * 3726:52d9f33070a0 1.7-storage-hwendel/MoinMoin/ (8 files in 5 dirs): revert to 5b376bbebe6b
2008-03-23T18:08:53  <CIA-39> Johannes Berg <johannes AT sipsolutions DOT net> default * 3727:704c687808aa 1.7-storage-hwendel/MoinMoin/search/_tests/test_search.py: fix queryparser test mismerge
2008-03-23T18:09:04  <starshine> human expectations have to be handled too; that's why deleted/restorable needs to still exist :)
2008-03-23T18:09:30  <lanius> sure
2008-03-23T18:09:51  <lanius> they do
2008-03-23T18:09:54  <starshine> so I *believe* the complaint here is... the obvious front-end UI to "restorable" no longer could see them
2008-03-23T18:10:04  <johill> that is still there now, I fixed that bug
2008-03-23T18:10:07  <starshine> ergo from a dummy persepctive it cannot be restored
2008-03-23T18:10:08  <johill> it sort of works now
2008-03-23T18:10:13  <lanius> which was a one liner which i stated
2008-03-23T18:10:17  <starshine> human expectations test fails?
2008-03-23T18:10:23  <johill> which isn't correct though
2008-03-23T18:10:31  <lanius> http://hg.moinmo.in/moin/1.7-storage-hwendel/rev/5b376bbebe6b
2008-03-23T18:10:33  <johill> as soon as you have non-contiguous revisions
2008-03-23T18:10:46  <lanius> which is not possible with 1.6
2008-03-23T18:10:49  <johill> which you have been caring so much about
2008-03-23T18:10:57  <johill> you want me to quote you on that?
2008-03-23T18:10:58  <xorAxAx> lanius: it is
2008-03-23T18:11:11  <lanius> xorAxAx: it is?
2008-03-23T18:11:19  <xorAxAx> lanius: in 1.6, wikis often have non-continuous revs if the admin removed a file manually
2008-03-23T18:11:19  <lanius> johill: up until now it was not possible
2008-03-23T18:11:25  <starshine> lanius: sure it is.
2008-03-23T18:11:26  <johill> lanius: of course it was
2008-03-23T18:11:26  <lanius> xorAxAx: right
2008-03-23T18:11:31  <xorAxAx> moin is pretty stable regarding that
2008-03-23T18:11:36  <lanius> right
2008-03-23T18:11:36  <xorAxAx> it will just ignore the edit log line
2008-03-23T18:11:38  <johill> lanius: moin16 backend never checked that new rev == current+1
2008-03-23T18:11:45  <starshine> in fact it's one of the things people like about moin backend
2008-03-23T18:11:54  <lanius> they can just remove things
2008-03-23T18:11:59  <starshine> "yay I can just go rm the stupid file if I really have to"
2008-03-23T18:12:17  <johill> xorAxAx: are you sure it doesn't show it in the info action?
2008-03-23T18:12:19  <lanius> so we have to analize the behaviour of 1.6 with missing revisions in between and the storage branch and bring them up to pair
2008-03-23T18:13:12  <johill> xorAxAx: it will still show them in the info action
2008-03-23T18:13:32  <xorAxAx> johill: so? but thats undefined behaviour IMHO
2008-03-23T18:13:37  <xorAxAx> the point is that it doesnt crash :)
2008-03-23T18:13:42  <johill> lanius: first of all, I think we should restore http://hg.moinmo.in/moin/1.7-storage-hwendel/rev/4ae98ba289e8
2008-03-23T18:13:54  <johill> xorAxAx: yeah, true, but that makes it simpler in moin16 backend too
2008-03-23T18:13:56  <lanius> that's fine
2008-03-23T18:14:06  <johill> lanius: ok to commit that?
2008-03-23T18:14:08  <lanius> yes
2008-03-23T18:14:09  <johill> then you can actually see the breakage
2008-03-23T18:14:33  <CIA-39> Johannes Berg <johannes AT sipsolutions DOT net> default * 3728:f4618a297553 1.7-storage-hwendel/MoinMoin/logfile/editlog.py: LocalEditLog: use backend instead of assuming all revisions [1, N] exist
2008-03-23T18:14:41  <johill> now
2008-03-23T18:14:41  <johill> do this
2008-03-23T18:14:43  <johill> create a page
2008-03-23T18:14:44  <johill> remove it
2008-03-23T18:14:45  <johill> create it
2008-03-23T18:14:47  <johill> remove it
2008-03-23T18:14:50  <johill> create it
2008-03-23T18:14:52  <johill> remove it
2008-03-23T18:14:55  <johill> go to action=info
2008-03-23T18:14:57  <johill> compare to 1.6/1.7
2008-03-23T18:15:19  <johill> then
2008-03-23T18:15:24  <johill> call remove_revision(1)
2008-03-23T18:15:36  <johill> check out metadata for revision 1
2008-03-23T18:15:40  <johill> see edit-log entries
2008-03-23T18:15:41  <johill> wtf?
2008-03-23T18:16:02  <lanius> wtf?
2008-03-23T18:16:20  <xorAxAx> %-)
2008-03-23T18:16:32  <starshine> ThomasWaldmann: alert.png doesn't seem to have the problem, icon-info.png does though
2008-03-23T18:17:16  <johill> lanius: you made remove_revision equivalent to DELETED
2008-03-23T18:17:25  <johill> which is the only sane way to do it, really, so I don't contest that
2008-03-23T18:17:25  <lanius> johill: which is fine for moin16
2008-03-23T18:17:36  <johill> but I do contest that it still allows remove_revision
2008-03-23T18:17:39  <johill> it should just forbid that
2008-03-23T18:17:41  <johill> since it can't do it
2008-03-23T18:18:05  <starshine> does this do something like present two commands that do the same thing?
2008-03-23T18:18:31  <johill> starshine: at the backend level, yes
2008-03-23T18:18:37  <johill> not entirely the same
2008-03-23T18:18:49  <johill> but the expectation of remove is one that moin16 cannot fulfil
2008-03-23T18:18:57  <johill> so it tries a half-assed attempt instead of just rejecting it
2008-03-23T18:19:27  <starshine> johill: well as long as it doesn't present a duplicate command at the front end users won't care how the backend implements their 'deleted'
2008-03-23T18:19:31  <xorAxAx> johill: didnt you want to talk about design deficies? :)
2008-03-23T18:19:43  <xorAxAx> than the removal code
2008-03-23T18:19:52  <lanius> how do i change the port the wiki starts on again
2008-03-23T18:19:54  <johill> yeah, I actually wanted to talk about the deadlock thing
2008-03-23T18:20:09  <johill> eh, I mean, conflict stuff
2008-03-23T18:20:20  <johill> but really, let's let lanius grasp this first
2008-03-23T18:21:41  <johill> then either he'll have to implement deleting/manipulating edit-log lines, or restore what I did
2008-03-23T18:21:58  <johill> the former we talked about and deemed not worth it
2008-03-23T18:22:11  <johill> (quite impossible, in fact, due to file locking)
2008-03-23T18:22:40  <johill> or rather, not doing file locking
2008-03-23T18:24:50  <xorAxAx> lanius: edit moin.py
2008-03-23T18:25:10  <xorAxAx> johill: ???
2008-03-23T18:25:19  <xorAxAx> johill: the backend should reject the purge request
2008-03-23T18:25:40  <xorAxAx> the larger issue is revision iteration/ the current+1 issue
2008-03-23T18:25:41  <johill> that's what I'm been saying and doing
2008-03-23T18:25:42  <johill> *sigh*
2008-03-23T18:26:01  <johill> removing the tests was necessary because moin16 backend couldn't support them, maybe I should have just left them failing?
2008-03-23T18:26:35  <johill> anyway, revision iteration is something that imho should just use the edit log as 1.6 did
2008-03-23T18:26:39  <johill> which I also implemented
2008-03-23T18:27:02  <xorAxAx> hmm
2008-03-23T18:27:23  <xorAxAx> well, the question is whether other parts do plain iteration from 1 to n
2008-03-23T18:27:33  <johill> not afaik
2008-03-23T18:27:44  <xorAxAx> and where would you use the editlog?
2008-03-23T18:27:47  <johill> and with that commit back in now nothing should actually do it
2008-03-23T18:27:53  <johill> in the backend you would
2008-03-23T18:28:00  <xorAxAx> ok
2008-03-23T18:28:05  <xorAxAx> what does it do currently?
2008-03-23T18:28:11  <johill> read all existing files
2008-03-23T18:28:13  <johill> which is wrong
2008-03-23T18:28:17  <johill> because deelted revisions don't have files
2008-03-23T18:28:28  <xorAxAx> hmm, yes
2008-03-23T18:28:29  <johill> basically it does listdir('revisions')
2008-03-23T18:28:40  <johill> we've discussed this before
2008-03-23T18:28:40  <lanius> johill: it just should to it now in the backend
2008-03-23T18:28:51  <lanius> because that would be the behaviour like it was before
2008-03-23T18:28:58  <johill> lanius: which is exactly what I did!
2008-03-23T18:28:59  <johill> ahrg
2008-03-23T18:29:08  <johill> you didn't actually look did you?
2008-03-23T18:29:14  <lanius> no you did something elese
2008-03-23T18:29:22  <lanius> johill: you read the editlog
2008-03-23T18:29:34  <johill> http://hg.moinmo.in/moin/1.7-storage-hwendel/rev/93f13afeced7
2008-03-23T18:29:47  <johill> moin 1.6 also reads the edit log afaik
2008-03-23T18:29:59  <johill> because that's the only place where it can actually get to konw about revisions
2008-03-23T18:30:03  <lanius> johill: whereas it would be enough to return a list from 1 to currev
2008-03-23T18:30:23  <johill> assuming you disallow discontiguous revisions
2008-03-23T18:30:27  <johill> (which you don't)
2008-03-23T18:30:32  <lanius> which was never supported in moin16
2008-03-23T18:30:40  <johill> which you allow people to create with the API now
2008-03-23T18:30:49  <lanius> which for moin16 is just the same as DELETED
2008-03-23T18:31:30  <johill> nope
2008-03-23T18:31:41  <johill> create page, delete page, create page
2008-03-23T18:31:44  <johill> set current to 10
2008-03-23T18:31:46  <johill> see action=inof
2008-03-23T18:31:50  <johill> see three entries, not 10
2008-03-23T18:32:01  <johill> it uses the edit log
2008-03-23T18:32:06  <johill> not 1..current
2008-03-23T18:32:37  <lanius> that is not a use case to be consired
2008-03-23T18:32:47  <johill> true
2008-03-23T18:32:49  <lanius> nobody does that
2008-03-23T18:32:56  <johill> but it can now suddenly happen with create_revision(10)
2008-03-23T18:33:05  <johill> and so it will happen if the backend doesn't disallow it
2008-03-23T18:33:21  <lanius> it can happen now
2008-03-23T18:33:26  <lanius> but it couldn't happen beofre
2008-03-23T18:33:30  <lanius> so there is no problem
2008-03-23T18:33:37  <lanius> it is a new behaviour
2008-03-23T18:33:44  <johill> no, I can edit the filesystem like that
2008-03-23T18:33:50  <lanius> but nobody does
2008-03-23T18:33:54  <lanius> that's the point
2008-03-23T18:33:57  <johill> ok
2008-03-23T18:33:59  <lanius> reading the editlog takes time
2008-03-23T18:34:01  <johill> so assuming that doesn't happen
2008-03-23T18:34:02  <lanius> long time
2008-03-23T18:34:07  <johill> eh
2008-03-23T18:34:10  <lanius> returning a list from count to 1 is fast
2008-03-23T18:34:17  <johill> you're confusing implementation and requirements
2008-03-23T18:34:28  <johill> whether you can do it faster or not is entirely within "implementation", not "requirements"
2008-03-23T18:34:42  <johill> however
2008-03-23T18:34:47  <johill> you're still not correct
2008-03-23T18:34:52  <johill> if I do create_revision(10)
2008-03-23T18:34:58  <johill> then list_revisions() will return 1..10
2008-03-23T18:35:00  <johill> which is totally bogus
2008-03-23T18:35:01  <lanius> yes
2008-03-23T18:35:06  <johill> in the new API
2008-03-23T18:35:08  <lanius> which is OK for moin 1.6
2008-03-23T18:35:11  <johill> not at all
2008-03-23T18:35:14  <lanius> it is
2008-03-23T18:35:17  <lanius> because you don't do it with moin 1.6
2008-03-23T18:35:21  <johill> no, it cannot actually break the API
2008-03-23T18:35:42  <lanius> look we are making a new storage api
2008-03-23T18:35:50  <johill> look, it's fine not to implement some API
2008-03-23T18:35:56  <johill> but it's not ok to implement it *wrongly*
2008-03-23T18:36:25  <lanius> ok you have two choices here
2008-03-23T18:36:34  <lanius> support moin16 100% compatible but REALLY SLOW
2008-03-23T18:36:43  <lanius> or support moin16 99% compatible with a reasonable speed
2008-03-23T18:36:46  <johill> nope
2008-03-23T18:36:46  <lanius> i took the second one
2008-03-23T18:36:51  <johill> wrong choices
2008-03-23T18:36:52  <johill> you have three
2008-03-23T18:37:23  <johill> implement moin16 99% compatible, with reasonable speed, and disallow creating new revisions != current+1
2008-03-23T18:37:23  <lanius> all frontend operations are supported 100%
2008-03-23T18:37:36  <johill> yes
2008-03-23T18:37:45  <lanius> which creating a new revision != current + 1 is not
2008-03-23T18:37:49  <johill> but that's true even if you disallow removing revisions and creating ones !=current+1
2008-03-23T18:38:00  <johill> we don't actually disagree here
2008-03-23T18:38:13  <lanius> but if i disallow it i have to do additionall checks
2008-03-23T18:38:15  <lanius> and additional code
2008-03-23T18:38:18  <lanius> which slows done and is work
2008-03-23T18:38:19  <johill> no
2008-03-23T18:38:20  <lanius> so i just don't do it
2008-03-23T18:38:37  <johill> well that's where we disagree
2008-03-23T18:38:45  <johill> you're implementing API that in teh future somebody will expect to work
2008-03-23T18:38:48  <johill> as documented
2008-03-23T18:38:54  <lanius> for a NEW backend
2008-03-23T18:38:57  <johill> or be able to actually notice when it didn't work
2008-03-23T18:39:03  <lanius> for 1.6 i expect to work AS IS
2008-03-23T18:39:06  <johill> the way you've implemented it it will appear to work
2008-03-23T18:39:10  <johill> but not actually do the right thing
2008-03-23T18:39:13  <johill> which is insane
2008-03-23T18:39:15  <lanius> that's fine
2008-03-23T18:39:23  <johill> not at all
2008-03-23T18:39:33  <lanius> we release it and say:
2008-03-23T18:39:48  <lanius> you can use your old wiki as is, but if you wan't to use new featuers you have to upgrade your storage to 1.7
2008-03-23T18:40:00  <johill> ahrg
2008-03-23T18:40:00  <johill> no
2008-03-23T18:40:02  <johill> we don't do that
2008-03-23T18:40:06  <johill> we cnanot
2008-03-23T18:40:10  <johill> cannot
2008-03-23T18:40:18  <johill> because we might want to use the new features in some code
2008-03-23T18:40:27  <johill> and people will want to run their old wiki with the new code
2008-03-23T18:40:30  <lanius> then ppl have to convert their backend
2008-03-23T18:40:32  <johill> so we have to know when it fails
2008-03-23T18:40:34  <lanius> it is very easy
2008-03-23T18:40:40  <johill> yes
2008-03-23T18:40:42  <lanius> not put to much work in the past but more in the feature
2008-03-23T18:40:51  <xorAxAx> i think lanius is right
2008-03-23T18:40:53  <johill> but we have to be able to tell them "you cannot do this operation because you haven't upgraded it yet"
2008-03-23T18:41:02  <lanius> no we don't have to tell it to them
2008-03-23T18:41:09  <xorAxAx> the moin16 backend is mainly there for bootstrapping and a nice migration path
2008-03-23T18:41:09  <lanius> we can say don't use the 1.6 backend
2008-03-23T18:41:12  <lanius> and write a converter
2008-03-23T18:41:13  <johill> of course we do, otherwise they expet it to work
2008-03-23T18:41:18  <lanius> which of course uses the moin1.6 backend
2008-03-23T18:41:25  <xorAxAx> lanius: the converter will use the backend :)
2008-03-23T18:41:35  <lanius> xorAxAx: :) that's why it exists
2008-03-23T18:41:43  <johill> ok so look at it the other way
2008-03-23T18:41:55  <johill> it's trivial to raise an exception in remove_revision
2008-03-23T18:42:01  <johill> rather than trying to implement it
2008-03-23T18:42:05  <johill> even less code
2008-03-23T18:42:26  <lanius> but you also talked about changes in create_revision and list_revisions and i don't know wherelese you find something if you look at the 0.0001 corner cases
2008-03-23T18:42:44  <johill> I'm fine with list_revisions doing 1..n if we disallow discontiguous
2008-03-23T18:43:08  <lanius> ok
2008-03-23T18:43:08  <johill> and create_revision is rather messed up anyway right now
2008-03-23T18:43:13  <xorAxAx> well, you can also disallow it and emulate revs as being purged
2008-03-23T18:43:25  <xorAxAx> ifthe editlog refers to revs that dont exist
2008-03-23T18:43:42  <johill> no becuase that is already done for deleted
2008-03-23T18:44:35  <johill> lanius: create_revision has another problem, which is that the API makes it really hard to see edit conflicts in a thread-safe manner
2008-03-23T18:44:48  <lanius> johill: create_revision shouldn't care for edit conflicts
2008-03-23T18:44:55  <johill> of course not
2008-03-23T18:45:17  * starshine notes silence
2008-03-23T18:45:20  <johill> but it must make it possible to detect them
2008-03-23T18:45:23  <lanius> no
2008-03-23T18:45:29  <starshine> gah ww :)
2008-03-23T18:45:30  <lanius> that's up to the layer above
2008-03-23T18:45:55  <johill> lanius: look. as it stands, it's not thread-safe to do that in the layer above
2008-03-23T18:46:07  <lanius> johill: why not
2008-03-23T18:46:12  <johill> because you have to
2008-03-23T18:46:15  <johill> cur = get-current()
2008-03-23T18:46:21  <johill> create_revision(cur+1)
2008-03-23T18:46:32  <starshine> but johill you can't disallow discontiguous versions on moin1.6 backend, sysadmins could introduce it.
2008-03-23T18:46:33  <johill> get_item(cur+1)
2008-03-23T18:46:45  <xorAxAx> johill: ?
2008-03-23T18:46:56  <johill> xorAxAx: don't ask me, ask lanius, that's how it works
2008-03-23T18:47:08  <johill> item.xyz = ..., item....
2008-03-23T18:47:09  <johill> item.save()
2008-03-23T18:47:16  <johill> so now assume two threads do this
2008-03-23T18:47:29  <johill> what stops them from stomping on each other?
2008-03-23T18:47:32  <xorAxAx> johill: its really something else than an "edit conflict" like we know it
2008-03-23T18:47:32  <lanius> locks
2008-03-23T18:47:44  <xorAxAx> its a concurrent revision creation :)
2008-03-23T18:47:45  <johill> especially with your create_revision not complaining that it exists already
2008-03-23T18:47:53  <johill> xorAxAx: yeah, but it plays into it
2008-03-23T18:48:46  <lanius> johill: before you can create a revision you hav eto lock the item
2008-03-23T18:48:54  <starshine> lanius: actually yes it could happen in old backend too, some people have very weird cronjobs that populate their moin with 'news' from other sources outside of python.
2008-03-23T18:49:25  <starshine> if you guys want to ignore the use-case of humans mucking with the raw fs, that's ok, but it has to be a major design call.
2008-03-23T18:49:46  <lanius> starshine: the use case is that the moin1.6 backend won't ever be used but as converter for a new backend
2008-03-23T18:49:48  <johill> starshine: not entirely, but we think it's ok that the data is not 100% consistent in that case
2008-03-23T18:50:17  <johill> lanius: tell that your grandma. not going to happen, look how many people didn't update underlay
2008-03-23T18:50:20  <starshine> lanius: I do not believe that sysadmins seeing there is more than one pluggable backend will believe you and honour it that way.
2008-03-23T18:50:34  <johill> lanius: and if you silently break their stuff they'll just curse and install mediawiki
2008-03-23T18:50:39  <xorAxAx> LOL
2008-03-23T18:50:46  <johill> don't treat sysadmins that way :)
2008-03-23T18:51:02  <lanius> that's just absurd
2008-03-23T18:51:02  <starshine> some are techie and will understand, but still grumble.  the non techie ones will wail that it broke.  guess which one draws best adherence to 'wiki way'
2008-03-23T18:51:12  <lanius> there is a big warning with the new release
2008-03-23T18:51:18  <johill> lanius: you're obviously too techie to understand
2008-03-23T18:51:20  <lanius> and if they still do it, there is nobody who can help them
2008-03-23T18:51:21  <starshine> johill: they may try twiki first, mw acl sucks :)
2008-03-23T18:51:46  <lanius> so back to the locking stuff
2008-03-23T18:52:00  <starshine> lanius: the wiki way is naturally atractive to people who *hate to think* about how it works under the hood.  they don't care. they just want it to work the same.
2008-03-23T18:52:06  <johill> so which operations need to be locked?
2008-03-23T18:52:13  <lanius> johill: all write operations
2008-03-23T18:52:22  <johill> why does create revision even exist then?
2008-03-23T18:52:30  <lanius> ?
2008-03-23T18:52:44  <lanius> on the backend level you have to lock nothing
2008-03-23T18:52:46  <johill> why not just get an item and save it?
2008-03-23T18:52:48  <lanius> locking is done a layer above
2008-03-23T18:52:56  <johill> yeah that's pretty absurd too
2008-03-23T18:53:00  <lanius> no
2008-03-23T18:53:25  <johill> sure, because most databases could actually be lock-free
2008-03-23T18:53:38  <johill> anyway
2008-03-23T18:53:45  <lanius> i see no connection to that
2008-03-23T18:53:52  <johill> why do you need create_revision?
2008-03-23T18:53:59  <lanius> to create a new revision i guess
2008-03-23T18:54:11  <johill> but why is a new revision created up front?
2008-03-23T18:54:14  <johill> that doesn't make sense to me
2008-03-23T18:54:21  <johill> you can create a new revision and then never save the item
2008-03-23T18:54:28  <lanius> because of my absurd thinking of a global database scheme
2008-03-23T18:54:30  <johill> that sounds just asking for trouble
2008-03-23T18:55:13  <lanius> you don't save items
2008-03-23T18:55:14  <lanius> you save data
2008-03-23T18:55:21  <johill> right
2008-03-23T18:55:46  <johill> well I guess you designed this top-down
2008-03-23T18:55:50  <lanius> no
2008-03-23T18:55:51  <johill> and I would have designed it bottom-up
2008-03-23T18:55:54  <lanius> yes
2008-03-23T18:56:16  <johill> well yes, you have locking in upper layers and whatever
2008-03-23T18:56:25  <lanius> whatever doesn't count
2008-03-23T18:56:26  <lanius> and yes i have
2008-03-23T18:56:36  <johill> and I would have just made it ask for a new revision which is cheap, and only create it when it's saved
2008-03-23T18:56:42  <lanius> because that is where it belongs
2008-03-23T18:57:04  <starshine> why does any lock belogn far away from the action it tracks?
2008-03-23T18:57:17  <lanius> because the lock has nothing to do with the create_revision action
2008-03-23T18:57:21  <starshine> doesn't that risk overlong entrapment or raace codnitions?
2008-03-23T18:57:24  <johill> starshine: neither of us thinks it is far away
2008-03-23T18:57:25  <lanius> create_revision is completly fine
2008-03-23T18:57:34  <lanius> the lock is around create_revision; set_data
2008-03-23T18:57:38  <lanius> which are two actions in the backend
2008-03-23T18:57:41  <johill> starshine: but we have a different idea of where things should be
2008-03-23T18:57:42  <lanius> but only one on the level above
2008-03-23T18:57:53  <johill> see that's the thing
2008-03-23T18:58:00  <johill> your backend can actually create corrupted data
2008-03-23T18:58:05  * starshine wonders if a whiteboard would help :)
2008-03-23T18:58:05  <johill> if you don't use it properly
2008-03-23T18:58:11  <lanius> define corrupt
2008-03-23T18:58:13  <lanius> sure
2008-03-23T18:58:19  <johill> which is totally wrong
2008-03-23T18:58:20  <lanius> you always have to use things correctly
2008-03-23T18:58:28  <lanius> nobody should use the backend
2008-03-23T18:58:29  <johill> the API should be designed in a way that it doesn't allow corruption
2008-03-23T18:58:32  <lanius> but the external interface
2008-03-23T18:58:35  <johill> right
2008-03-23T18:58:39  <johill> still
2008-03-23T18:58:48  <lanius> the backend doesn't care about wiki pages
2008-03-23T18:58:56  <starshine> isn't the point of having a fomralized backend, that there *could* be more than one external interface?
2008-03-23T18:58:59  <lanius> it doesn't care about edit conflicts
2008-03-23T18:59:04  <lanius> it just cares about the data it gets
2008-03-23T18:59:06  <johill> lanius: I know. stop
2008-03-23T18:59:11  <lanius> starshine: noe
2008-03-23T18:59:15  <johill> lanius: say I create a revision and save first metadata and then data
2008-03-23T18:59:20  <lanius> starshine: the point is having multiple backends
2008-03-23T18:59:22  <johill> and another user saves first data and then metadata
2008-03-23T18:59:25  <johill> it can get totally f'ed up
2008-03-23T18:59:30  <johill> unless they do locking on a higher level
2008-03-23T18:59:33  <lanius> johill: right
2008-03-23T18:59:34  <starshine> s/interface/app or function or UI using the interface/
2008-03-23T18:59:36  <lanius> johill: that is what i do
2008-03-23T18:59:38  <johill> which is totally confused!
2008-03-23T18:59:45  <lanius> no
2008-03-23T18:59:46  <johill> wrong level
2008-03-23T18:59:50  <lanius> no
2008-03-23T18:59:51  <johill> the backend should guarantee consistency
2008-03-23T19:00:04  <lanius> the question is what you understand under consistency
2008-03-23T19:00:13  <starshine> is it atomic?
2008-03-23T19:00:22  <johill> starshine: nothing is, pretty much
2008-03-23T19:00:22  <lanius> all operations theirself are atomic
2008-03-23T19:00:36  <lanius> every single operation
2008-03-23T19:00:38  <starshine> ok now we have the core of the design misconnect :)
2008-03-23T19:00:52  <johill> no
2008-03-23T19:01:34  <lanius> no what, core what
2008-03-23T19:02:41  <johill> well I guess the actual backend operations are mostly atomic
2008-03-23T19:02:47  <lanius> yes
2008-03-23T19:02:57  <lanius> the things that are not atomic are stated in the header
2008-03-23T19:03:29  <lanius> and apply only for windows
2008-03-23T19:04:26  <johill> actually, create_revision isn't necessarily atomic on unix
2008-03-23T19:04:45  <johill> because rename() doesn't work across filesystems and you use tmp_dir
2008-03-23T19:04:54  <johill> while you should just use the actual data dir
2008-03-23T19:05:56  <lanius> ok
2008-03-23T19:06:14  <lanius> but we said we are looking at the design currently
2008-03-23T19:06:17  <lanius> not the implementation
2008-03-23T19:06:25  <lanius> so the design is atomic
2008-03-23T19:06:26  <lanius> now go on
2008-03-23T19:06:33  <johill> right
2008-03-23T19:06:50  <johill> the thing is that the design makes actually implementing the wiki on it unnatural
2008-03-23T19:06:53  <johill> but ok
2008-03-23T19:07:05  <lanius> yes
2008-03-23T19:07:11  <johill> I guess you wanted a generic database
2008-03-23T19:07:21  <lanius> for administrative operations e.g.
2008-03-23T19:07:35  <johill> that doesn't preclude it
2008-03-23T19:07:45  <lanius> ?
2008-03-23T19:07:58  <johill> especially since now you can't do admin operations on a live wiki
2008-03-23T19:08:18  <lanius> so you say you are in maintaince, do the operations, and go back
2008-03-23T19:08:59  <johill> which is pretty bogus if you just need to delete a page including history
2008-03-23T19:09:06  <johill> now you suddenly need a global lock
2008-03-23T19:09:13  <lanius> only on the page
2008-03-23T19:09:32  <lanius> but yes this is the design
2008-03-23T19:09:33  <johill> yes but it even has to be lock against reading
2008-03-23T19:09:36  <lanius> maximum flexibility
2008-03-23T19:09:42  <johill> haha
2008-03-23T19:09:47  <lanius> ?
2008-03-23T19:09:53  <johill> at what price?
2008-03-23T19:10:08  <lanius> 4500$ it was
2008-03-23T19:10:17  <johill> too much. :P
2008-03-23T19:10:23  <johill> anyway
2008-03-23T19:10:29  <johill> it can actually work that way
2008-03-23T19:10:34  <lanius> yes i know
2008-03-23T19:10:50  <johill> it's not very natural to actually implement the higher levels
2008-03-23T19:11:15  <lanius> there is nothing like natur in computer science
2008-03-23T19:11:33  <johill> I knew you were too much of a techie ;)
2008-03-23T19:11:45  <lanius> so don't tell me blabla, but tell me the actual problems
2008-03-23T19:12:27  <johill> here's another one: you can't actually edit with two editors at the same time right now
2008-03-23T19:12:39  <lanius> nobody said it should be possible
2008-03-23T19:12:50  <johill> of course
2008-03-23T19:13:00  <lanius> no
2008-03-23T19:13:07  <johill> you're kidding right?
2008-03-23T19:13:07  <lanius> that was not a requirement
2008-03-23T19:13:30  <johill> right now the second browser just hangs on ?action=edit
2008-03-23T19:13:38  <johill> and then craps out with a locking error
2008-03-23T19:13:46  <lanius> that's shouldn't happen
2008-03-23T19:13:48  <johill> of course implementing the soft locking we have in moin is a requirement
2008-03-23T19:14:08  <johill> anyway
2008-03-23T19:14:16  <johill> I'll have to go now
2008-03-23T19:14:17  <lanius> yes i had something different in mind when you said two editors at the same time
2008-03-23T19:14:37  <lanius> the soft locking is implemented as metadata
2008-03-23T19:14:45  <johill> except it doesn't work
2008-03-23T19:14:50  <lanius> which worked fine the last time i tested it
2008-03-23T19:15:08  <lanius> but from the design it should work, shouldn't it?
2008-03-23T19:15:40  <johill> if you lock a lot, yes
2008-03-23T19:15:47  <lanius> ?
2008-03-23T19:15:59  <johill> you have to lock from before create_revision to after save_data/meta
2008-03-23T19:16:09  <lanius> yes
2008-03-23T19:16:24  <johill> right now though that's totally broken, I didn't even get an edit conflict
2008-03-23T19:16:38  <lanius> but from the design it should work, shouldn't it?
2008-03-23T19:16:39  <johill> it actually worked now to save a page with different editors at the same time
2008-03-23T19:16:48  <johill> with a lot of locking, yes
2008-03-23T19:16:56  <lanius> that has nothing to do with a lot
2008-03-23T19:17:04  <johill> holding locks for long times is expensive
2008-03-23T19:17:04  <lanius> it is just neccessary
2008-03-23T19:17:08  <lanius> long time
2008-03-23T19:17:14  <johill> yes
2008-03-23T19:17:15  <lanius> you tell me createing a revision, saving data and metadata is a long time
2008-03-23T19:17:17  <johill> long time
2008-03-23T19:17:19  <johill> it is
2008-03-23T19:17:21  <johill> a very long time
2008-03-23T19:17:21  <lanius> no
2008-03-23T19:17:25  <johill> sure
2008-03-23T19:17:31  <lanius> and i don't see any other way doin' it
2008-03-23T19:17:31  <johill> you might have a different idea of a long time
2008-03-23T19:17:38  <lanius> definitively
2008-03-23T19:17:42  <johill> the way I would have done it is
2008-03-23T19:17:54  <johill>  create_revision() returns an object and doesn't modify the database
2008-03-23T19:18:13  <johill> and then when you save the item you check that it actually wasn't created by somebody else in the mean time
2008-03-23T19:18:23  <johill> but you separated saving metadata and data so that isn't possible
2008-03-23T19:18:49  <johill> it would make the common case much faster (no locking except in the backend) and penalise the conflict case
2008-03-23T19:19:05  <johill> good thing you don't program in the OS kernel ;)
2008-03-23T19:19:29  <lanius> the backend was designed to make it easy to implement
2008-03-23T19:19:30  <johill> anyway, it can work, and I don't mind holding locks for long times in userspace as much as in the kernel
2008-03-23T19:19:35  <damjan> How about just using CouchDB for storage ... just kidding :)
2008-03-23T19:19:38  <lanius> the external was designed to make it easy to use
2008-03-23T19:20:19  <johill> lanius: if save would save metadata and data at the same time it would be simple to implement too
2008-03-23T19:20:48  <johill> it'd just have to do a bit of locking for a filesystem storage
2008-03-23T19:21:03  <johill> anyway, it can work and I'm not going to fundamentally change the design
2008-03-23T19:21:07  <johill> although I disagree with it
2008-03-23T19:21:39  <johill> so I'll now go have dinner and spend the rest of the day with my g/f :)
2008-03-23T19:22:42  * xorAxAx map-reduces damjan :)
2008-03-23T19:24:22  <lanius> johill: but it was not my concept
2008-03-23T19:24:39  <lanius> johill: my concept was more flexibility instead of only saving everything at the same time
2008-03-23T19:24:53  <lanius> johill: and you sound as if locks are a bad things
2008-03-23T19:25:45  <lanius> johill: but in your case you have to reject the second person after the first made the commit
2008-03-23T19:25:57  <lanius> johill: in my case he is not allowed to commit during the time
2008-03-23T19:26:04  <lanius> johill: i don't see why your's is better
2008-03-23T20:35:25  <CIA-39> Thomas Waldmann <tw AT waldmann-edv DOT de> default * 2602:ce515d8ef44f 1.6/MoinMoin/i18n/ (40 files): updated i18n
2008-03-23T20:41:48  <CIA-39> Thomas Waldmann <tw AT waldmann-edv DOT de> default * 2603:6df0ffae1a61 1.6/ (docs/INSTALL.html wiki/data/intermap.txt): make install-docs interwiki
2008-03-23T20:55:49  <ThomasWaldmann> if someone has time, he could help finding out what's up with the MOIN_SESSION cookie
2008-03-23T20:56:35  <ThomasWaldmann> it looks like you can have a cookie (maybe timed out?), but not getting a session and you are not logged in
2008-03-23T20:57:02  <ThomasWaldmann> then you tried to log in, it works for 1 request, but after the next request, you are logged out again.
2008-03-23T20:57:38  <ThomasWaldmann> (happens e.g. in 1.6 and on master.moinmo.in)
2008-03-23T20:58:26  * ThomasWaldmann will make a fresh underlay meanwhile
2008-03-23T21:25:50  <xorAxAx> ThomasWaldmann: yes, experienced that today as well, pretty annoying
2008-03-23T21:26:39  <dreimark> never seen it
2008-03-23T21:27:22  <dreimark> do we have it only on master /
2008-03-23T21:27:24  <dreimark> ?
2008-03-23T21:39:28  <dreimark> xorAxAx: you do have solved it by deleting your cookie ?
2008-03-23T21:39:41  <xorAxAx> yes, as i wrote
2008-03-23T21:50:30  <dreimark> I was today logged out on both wikis but I thought this was because of the update
2008-03-23T22:00:18  <dreimark> ThomasWaldmann: is mmaster wsgi too?
2008-03-23T22:24:11  <ThomasWaldmann> yes
2008-03-23T22:25:05  <ThomasWaldmann> i suspect some "session lifetime" relation as i didn't see it on moinmo.in yet, only on master which I visit less often
2008-03-23T23:10:02  <johill> I had the same cookie problem
2008-03-23T23:10:07  <johill> I have no idea what could be causing it
2008-03-23T23:11:27  <dreimark> do we have httponly conffigured ?
2008-03-23T23:12:41  * dreimark uses an X0 and battery is quite empty
2008-03-23T23:14:42  <johill> lanius: locks are a bad thing. my design would optimise the common case in favour of the non-common concurrent save case and yes, I would simply reject the second edit
2008-03-23T23:14:58  <johill> lanius: doing things lock-free is always a good thing.
2008-03-23T23:15:17  <johill> lanius: mind you, I'm heavily inspired by programming the linux kernel where scalability matters much more :)
2008-03-23T23:19:24  <johill> dreimark: I have a theory in that your session was deleted and your cookie wasn't
2008-03-23T23:19:32  <johill> dreimark: but even then I can't really see why it would cause this behaviour
2008-03-23T23:19:38  <johill> anyway, I better go sleep
2008-03-23T23:21:56  <xorAxAx> johill: reject the second edit!?
2008-03-23T23:22:03  <xorAxAx> johill: you hopefully mean the second save :)
2008-03-23T23:46:38  <dreimark> johill: the behaviour may be because of browser cache
2008-03-23T23:46:48  <dreimark> gn johill
2008-03-23T23:49:13  * dreimark wonders if all this mercurial errors came from the change of tar instead of bz2 for underlay
2008-03-23T23:49:22  * dreimark fetches a new 1.6 clone

MoinMoin: MoinMoinChat/Logs/moin-dev/2008-03-23 (last edited 2008-03-22 23:15:02 by IrcLogImporter)