| *** kosh_ has joined #zope | 00:40 | |
| *** kosh has quit IRC | 00:43 | |
| *** mup has quit IRC | 01:09 | |
| *** mup_ has joined #zope | 01:09 | |
| *** mup_ is now known as mup | 01:09 | |
| *** stereo_ has quit IRC | 01:26 | |
| *** kosh_ has quit IRC | 01:49 | |
| *** supton has joined #zope | 02:31 | |
| *** supton has quit IRC | 02:45 | |
| *** Bahman has joined #zope | 02:47 | |
| *** Bahman has quit IRC | 02:50 | |
| *** menesis has quit IRC | 05:59 | |
| *** alecm has quit IRC | 06:11 | |
| *** Arfrever has joined #zope | 06:32 | |
| *** alecm has joined #zope | 07:19 | |
| *** alecm has joined #zope | 07:19 | |
| *** giacomos has joined #zope | 07:45 | |
| *** supton has joined #zope | 08:10 | |
| *** supton has quit IRC | 08:57 | |
| *** __mac__ has joined #zope | 09:04 | |
| *** tisto has joined #zope | 09:11 | |
| *** JaRoel|4D has quit IRC | 09:40 | |
| *** alecm has quit IRC | 09:47 | |
| *** alecm has joined #zope | 09:47 | |
| *** JaRoel|4D has joined #zope | 10:04 | |
| *** PeterZ1 has joined #zope | 10:07 | |
| *** PeterZ1 has left #zope | 10:07 | |
| *** kosh has joined #zope | 10:20 | |
| *** sylvain has joined #zope | 10:35 | |
| sylvain | Hello mgedmin | 10:36 |
|---|---|---|
| mgedmin | hi sylvain | 10:38 |
| sylvain | you saw my large pull request | 10:38 |
| sylvain | I will fix all the silly mistakes about format and english | 10:38 |
| sylvain | but I wanted to explain why a couple of things are like this | 10:39 |
| sylvain | I will put some comments on github as well | 10:39 |
| mgedmin | that sounds like a good idea | 10:39 |
| sylvain | in fact | 10:39 |
| sylvain | we used Relstorage history free | 10:39 |
| sylvain | and did a pack using the official pack script | 10:39 |
| sylvain | on a write heavy database | 10:39 |
| sylvain | that toke a long time and created all kind of POSKey error | 10:40 |
| mgedmin | I actually found some of my questions answered in the README | 10:40 |
| sylvain | so we wanted to browser the database to find the objects pointing to the missing one | 10:40 |
| sylvain | yes | 10:40 |
| mgedmin | it's a shame github doesn't let me review my comments and questions before publishing them | 10:40 |
| sylvain | well I am a bit confused how to answer all of them, but I will try to figure it out | 10:41 |
| sylvain | we added the zodbcheck to find them and start browsing the objects from the missing ones | 10:41 |
| sylvain | the main issue is | 10:42 |
| sylvain | most of the code only works for Relstorage history free | 10:42 |
| sylvain | if you have multiple versions of objects | 10:42 |
| sylvain | all the algorithms used stop working :/ | 10:42 |
| mgedmin | oh! I see! | 10:42 |
| sylvain | and we did that way | 10:43 |
| sylvain | because we have a large database | 10:43 |
| sylvain | and did not wait weeks to do things | 10:43 |
| sylvain | that's why we precompute the index with the zodbcheck | 10:43 |
| sylvain | and while doing the check we check for poskey errors | 10:43 |
| sylvain | we do that every day on the database | 10:44 |
| mgedmin | how large is your database? | 10:44 |
| sylvain | and if we find any, we have the index and open in zodbbrowser | 10:44 |
| sylvain | 22 millions of objects | 10:44 |
| sylvain | those are small, so it is only 6 GB if packed | 10:45 |
| sylvain | same thing for the search, that's in a script because it takes some time to go through the database | 10:46 |
| mgedmin | that's fine | 10:46 |
| sylvain | and the pack script, well, we can definitely move it outside of this package | 10:46 |
| sylvain | but we tested some other solution, like relstorage_packer | 10:46 |
| mgedmin | it's just that longterm I want this to be in the web app, but done in a background task | 10:46 |
| sylvain | I can understand that | 10:46 |
| sylvain | that would be a nice feature | 10:46 |
| mgedmin | (in fact I want some of the current history crawling code to be done in the background) | 10:46 |
| sylvain | but without index, it does take some time | 10:47 |
| sylvain | so the pack, we tested some other script, that toke 4 or 5 days to run | 10:47 |
| sylvain | and after we thought we had most of the information in the zodbcheck database | 10:47 |
| sylvain | and wrote this SQL query, that takes 15 minutes to find out that to do delete on a fast computer | 10:48 |
| sylvain | that's why it is there | 10:48 |
| mgedmin | nice | 10:48 |
| sylvain | but again | 10:48 |
| sylvain | all of this makes sense only for history free, like in relstorage | 10:49 |
| sylvain | I am not sure if there is any other backend that have this option | 10:49 |
| mgedmin | MemoryStorage? :) | 10:49 |
| sylvain | we wondered if we should make a pull request for a long time | 10:49 |
| sylvain | because it is kind of specific | 10:49 |
| mgedmin | I would love for ZODB to have an API to iterate over all the objects (not transactions) | 10:49 |
| sylvain | there is one | 10:50 |
| sylvain | but that is not implemented by all storage | 10:50 |
| mgedmin | what is it? | 10:50 |
| sylvain | you can do this on FileStorage I believe | 10:50 |
| sylvain | let me look of it | 10:50 |
| sylvain | I think that's the record_iternext | 10:52 |
| sylvain | like I used in zodbupdate | 10:52 |
| sylvain | yes | 10:53 |
| sylvain | I guess it would be possible to make a custom solution to iterate of FileStorage for instance | 10:53 |
| sylvain | to have the zodbcheck script works there | 10:53 |
| mgedmin | ah, I see | 10:54 |
| mgedmin | it's part of an interface: https://github.com/zopefoundation/ZODB/blob/master/src/ZODB/interfaces.py#L1127 | 10:55 |
| sylvain | yes | 10:55 |
| sylvain | but only implemented by FileStorage | 10:55 |
| sylvain | Relstorage does not have this | 10:55 |
| sylvain | it only have with transactions | 10:55 |
| mgedmin | nor ClientStorage :/ | 10:55 |
| mgedmin | and the API is not exactly beautiful | 10:56 |
| mgedmin | oh well | 10:56 |
| mgedmin | maybe someone will create a ZODB PR for this ;) | 10:56 |
| sylvain | yes but if you use ZEO, you most probably have a FileStorage and could run the zodbcheck directly on it | 10:56 |
| mgedmin | so, I'm very happy that you submitted the PR | 10:56 |
| sylvain | I will cleaned it up | 10:56 |
| sylvain | we wrote most of this code in a hurry trying to solve problems | 10:57 |
| mgedmin | I planned to build an in-memory index for backward references | 10:57 |
| mgedmin | but an on-disk index is maybe even better | 10:57 |
| mgedmin | say rather "this code was battle-tested" ;) | 10:57 |
| sylvain | we have an in-memory one we used in tests | 10:57 |
| mgedmin | also, I'd rather have multiple PRs for little bits of this than this one cleaned up | 10:57 |
| sylvain | to check that if we delete an object, there are no references left to it | 10:57 |
| sylvain | yes, I can maybe investigate how to do this multiple PR, but I am not sure I know how to do ti | 10:58 |
| sylvain | it* | 10:58 |
| mgedmin | create new branch, cherry-pick the relevant commits, maybe git rebase -i to make it pretty and/or squash related bits/fixups | 10:59 |
| mgedmin | repeat for other PRs | 10:59 |
| sylvain | ok | 10:59 |
| mgedmin | I like to start with smallest changes first, because those are easiest | 10:59 |
| sylvain | I will first make a bunch of commit to fix all the comments you already put there | 11:00 |
| sylvain | because most of them makes sense | 11:00 |
| mgedmin | hm, actually I'm not sure what the best approach is | 11:00 |
| mgedmin | maybe fix up typos etc first? | 11:00 |
| mgedmin | maybe instead of cherry-picking use a merge tool to pick specific changes? | 11:00 |
| mgedmin | then when a standalone PR is merged, maybe github will manage to cleanly update this one to show only remaining changes? | 11:01 |
| sylvain | well I should already fix all the typo and format issues, because I will still to do it anyway | 11:01 |
| sylvain | and after I will see to make nicer pull requests | 11:02 |
| mgedmin | and then there's always the approach of creating a new branch and reimplementing the feature from scratch, using the existing branch as a prototype (and liberally copy-pasting code from it) | 11:02 |
| mgedmin | this requires practically no git-fu | 11:02 |
| sylvain | I will see | 11:02 |
| mgedmin | pick whichever's easiest for you | 11:03 |
| sylvain | I will fix some issues today, but I have some other work to do as well | 11:03 |
| * mgedmin nods | 11:03 | |
| sylvain | so it will takes some time | 11:03 |
| mgedmin | I have some ideas how to make the reference DB building work with multiple object versions | 11:03 |
| mgedmin | I'll comment on the PR | 11:04 |
| mgedmin | https://github.com/mgedmin/zodbbrowser/pull/19/files#r33017986 | 11:06 |
| *** kosh has quit IRC | 11:07 | |
| *** agroszer has joined #zope | 11:08 | |
| *** MrTango has joined #zope | 11:10 | |
| *** kosh has joined #zope | 11:17 | |
| *** Arfrever has quit IRC | 11:20 | |
| *** projekt01 has joined #zope | 11:23 | |
| *** kosh has quit IRC | 11:28 | |
| *** menesis has joined #zope | 12:27 | |
| *** Pumukel has joined #zope | 12:35 | |
| *** maurits has joined #zope | 12:48 | |
| *** fredvd has joined #zope | 12:58 | |
| *** projekt01 has quit IRC | 13:24 | |
| *** maurits has quit IRC | 13:37 | |
| *** maurits has joined #zope | 14:42 | |
| *** yvl has joined #zope | 15:08 | |
| *** menesis has quit IRC | 15:22 | |
| *** giacomos has quit IRC | 15:24 | |
| *** menesis has joined #zope | 15:34 | |
| *** giacomos has joined #zope | 15:35 | |
| *** yvl has quit IRC | 16:14 | |
| *** sm has quit IRC | 16:37 | |
| *** menesis has quit IRC | 16:43 | |
| *** menesis has joined #zope | 16:51 | |
| *** sm has joined #zope | 16:59 | |
| *** projekt01 has joined #zope | 17:08 | |
| *** supton has joined #zope | 17:51 | |
| *** MrTango has quit IRC | 18:06 | |
| *** __mac__ has quit IRC | 18:21 | |
| *** agroszer has quit IRC | 18:31 | |
| *** sylvain has quit IRC | 18:47 | |
| *** fredvd has quit IRC | 18:48 | |
| *** JaRoel|4D has quit IRC | 18:54 | |
| *** daMaestro has joined #zope | 19:01 | |
| *** tisto has quit IRC | 19:09 | |
| *** projekt01 has quit IRC | 19:18 | |
| *** JaRoel|4D has joined #zope | 19:18 | |
| *** kevin7kal_ has joined #zope | 19:27 | |
| *** kevin7kal has quit IRC | 19:29 | |
| *** Pumukel has quit IRC | 19:30 | |
| *** maurits has quit IRC | 19:41 | |
| *** giacomos has quit IRC | 19:50 | |
| *** kosh has joined #zope | 20:17 | |
| *** __mac__ has joined #zope | 20:27 | |
| *** __mac__ has quit IRC | 20:39 | |
| *** __mac__ has joined #zope | 20:40 | |
| *** menesis has quit IRC | 20:41 | |
| *** menesis has joined #zope | 21:25 | |
| *** __mac__ has joined #zope | 21:27 | |
| *** __mac__ has quit IRC | 22:25 | |
| *** Arfrever has joined #zope | 22:54 | |
| *** betabug has quit IRC | 23:29 | |
| *** betabug has joined #zope | 23:30 | |
| *** kosh has quit IRC | 23:53 | |
Generated by irclog2html.py 4.0.0 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!