resolve symlinks on local files
[rersyncrecent.git] / Todo
blob738e82c2abf35f94fe7d9380d18b6d548c46161e
1 2008-08-26  Andreas J. Koenig  <andreas.koenig.7os6VVqR@franz.ak.mind.de>
3         * tempted to refactor rmirror into resolve_symlink, localize, etc.
4         Curious if rsync_options=links equal 0 vs. 1 will make the expected
5         difference.
7         * rsync options: it's a bit of a pain that we usually need several rsync
8         options, like compress, links, times, checksum and that there is no
9         reasonable default except the original rsync default. I think wee can
10         afely assume that the rsync options are shared between all recentfile
11         instances within one recent tree.
13 2008-08-20  Andreas J. Koenig  <andreas.koenig.7os6VVqR@franz.ak.mind.de>
15         * deletes: if a delete follows an add quickly enough it may happen that
16         a downstream mirror did not see the add at all! It seems this needs to
17         be mentioned somewhere.
19 2008-08-19  Andreas J. Koenig  <andreas.koenig.7os6VVqR@franz.ak.mind.de>
21         * I suspect the treat of metadata is incorrect during read or something.
22         The bug that I am watching is that between 06:08 and 06:09 the 6h file
23         contained more than 6 hours worth of data. At 06:08 we merged into the
24         1d file. We need to take snapshots of the 6h file over the course of an
25         hour or maybe only between XX:08 and XX:09? Nope, the latter is not
26         enough.
28         Much worse: watching the 1h file: right at the moment (at 06:35) it
29         covers 1218867584-1219120397 which is 70 hours.
31         Something terribly broken. BTW, 1218867584 corresponds to Sat Aug 16
32         08:19:44 2008, that is when I checked out last time, so it seems to be
33         aggregating and never truncating?
35         No, correct is: it is never truncating; but wrong is: it is aggregating.
36         It does receive a lot of events from time to time from a larger file.
37         Somehow a large file gets merged into the small one and because the
38         "meta/merged" attribute is missing, nobody is paying attention. I
39         believe that I can fix this by making sure that metadata are honoured
40         during read. DONE and test adjusted.
42 2008-08-17  Andreas J. Koenig  <andreas.koenig.7os6VVqR@franz.ak.mind.de>
44         * grand renaming plan
46         remotebase          => remoteroot   to fit well with localroot        DONE
47         local_path()        => localroot    seems to me should already work   DONE
48         recentfile_basename => rfilename    no need to stress it has no slash DONE
50         filenameroot??? Doesn't seem too bad to me today. Maybe something like
51         kern? It would anyway need a deprecation cycle because it is an
52         important constructor.
54         * I like the portability that Data::Serializer brings us but the price
55         is that some day we might find out that it is slowing us a bit. We'll
56         see.
58 2008-08-16  Andreas J. Koenig  <andreas.koenig.7os6VVqR@franz.ak.mind.de>
60         * should we not enter the interval of the principal (or the interval of
61         the merging file?) in every aggregated/merged file?
63         * we should aim at a first release and give up on thinking about
64         sanitizing stuff and zloop. Let's just admit that a full traditional
65         rsync is the only available sanitizer ATM. Otherwise it's complicated
66         stuff: sanitizing on the origin server, sanitizing on the slaves,
67         sanitizing forgotten files, broken timestamps, etc. Let's delay it and
68         get the basics out before this becomes a major cause for mess.
70 2008-08-13  Andreas Koenig  <k@andreas-koenigs-computer.local>
72         * On OSes not supporting symlinks we expect that RECENT.recent contains
73         the contents of the principal recentfile. Actually this is identical on
74         systems supporting symlinks. Simple, what follows from that is that we
75         need to keep the serializer in the metadata because we cannot read it
76         from the filename, doesn't it? Of course not. It's a chicken and egg
77         problem. This leaves us with the problem to actually parse the
78         serialized data to find out in which format it is. So who can do the 4
79         or 5 magics we wanted to support? File::LibMagic?
81 2008-08-09  Andreas Koenig  <k@andreas-koenigs-computer.local>
83         * remotebase and recentfile_basename are ugly names. Now that we need a
84         word for the shortest/principal/driving recentfile too we should do
85         something about it.
87         localroot is good. rfile is good. local_path() is bad, local_path($path)
88         is medium, filenameroot() is bad, remotebase is bad, recentfile is
89         already deprecated.
91         Up to now remotebase was the string that described the remote root
92         directory in rsync notation, like pause.perl.org::authors. And
93         recentfile_basename was "RECENT-1h.yaml".
95 2008-08-08  Andreas Koenig  <k@andreas-koenigs-computer.local>
97         * The test that was added in today's checkin is a good start for a test
98         of rmirror. We should have more methods in Recent.pm: verify,
99         addmissingfiles. We should verify the current tree, then rmirror it and
100         then verifytree the copy. We could then add some arbitrary file and let
101         it be discovered by addmissingfiles, then rmirror again and then
102         verifytree the copy again.
104         Then we could start stealing from csync2 sqlite database [no port to
105         OSX!] and fill a local DB. And methods to compare the database with the
106         recentfiles. Our strength is that in principle we could maintain state
107         with a single float. We have synced up to 1234567890.123456. If the Z
108         file does not add new files all we have to do is mirror the new ones and
109         delete the goners.
111         This makes it clear that we should extend current protocol and declare
112         that we cheat when we add files too late, just to help the other end
113         keeping track. Ah yes, that's what was meant when zloop was mentioned
114         earlier.
116         Maybe need to revisit File::Mirror to help me with this task.
118 2008-08-07  Andreas Koenig  <k@andreas-koenigs-computer.local>
120         * There must be an allow-me-to-truncate flag in every recentfile.
121         Without it one could construct a sequence of updates winning the locking
122         battle against the aggregator. Only if an aggregator has managed to
123         merge data over to the next level, truncating can be allowed. DONE with
124         accessor merged.
126 2008-08-06  Andreas Koenig  <k@andreas-koenigs-computer.local>
128         * We should probably guarantee that no duplicates enter the aggregator
129         array.
131 2008-08-02  Andreas J. Koenig  <andreas.koenig.7os6VVqR@franz.ak.mind.de>
133         * To get merge operation faster would need a good benchmark test. What
134         02 spits out isn't reliable enough and is dominated by many other
135         things. Between
137         commit 10176bf6b79865d4fe9f46e3857a3b8669fa7961
138         Author: Andreas J. Koenig <k@k75.(none)>
139         Date:   Sat Aug 2 07:58:04 2008 +0200
141         and
143         commit 3243120a0c120aaddcd9b1f4db6689ff12ed2523
144         Author: Andreas J. Koenig <k@k75.(none)>
145         Date:   Sat Aug 2 11:40:29 2008 +0200
147         there was a lot of trying but the effect is hardly measurable with
148         current tests.  
150         * overhead of connecting seems high. When setting
151         max_files_per_connection to 1 we see that.
153 2008-08-01  Andreas J. Koenig  <andreas.koenig.7os6VVqR@franz.ak.mind.de>
155         * 1217622571.0889 - 1217597432.86734 = 25138.2215600014
157         25138.2215600014/3600 = 6.98283932222261
159         It jumps into the eye that this is ~ 7 hours, not ~6, so there seems to
160         be a bug in the aggregator. FIXED
162 2008-07-27  Andreas J. Koenig  <andreas.koenig.7os6VVqR@franz.ak.mind.de>
164         * e.g. id/Y/YE/YEWENBIN/Emacs-PDE-0.2.16.tar.gz: Do we have it, should
165         we have it, can we mirror it, mirror it!
167         I fear this needs a new class which might be called
168         File::Rsync::Mirror::Recent. It would collect all recentfiles of a kind
169         and treat them as an entity. I realize that a single recentfile may be
170         sufficient for certain tasks and that it is handy for the low level
171         programmer but it is not nice to use. If there is a delete in the 1h
172         file then the 6h file still contains it. Seekers of the best information
173         need to combine at least some of the recentfiles most of the time.
175         There is the place for the Z loop!
177         But the combination is something to collect in a database, isn't it. Did
178         csync2 just harrumph?
180 2008-07-26  Andreas J. Koenig  <andreas.koenig.7os6VVqR@franz.ak.mind.de>
182         * it just occurred to me that hosts in the same mirroring pool could
183         help out each other even without rewriting the recentfile. Just fetch
184         the stuff to mirror from several places, bingo. But that's something
185         that should rather live in a separate package or in rsync directly.
187         * cronjobs are unsuited because with ntp they would all come at the full
188         minute and disturb each other. Besides that I'd hate to have a backbone
189         with more than a few seconds latency.
191 2008-07-25  Andreas J. Koenig  <andreas.koenig.7os6VVqR@franz.ak.mind.de>
193         * a second rsync server with access control for PAUSE. Port? 873 is the
194         standard port, let's take 8873.
196         * if there were a filesystem based on this, it would have a slow access
197         to inexistent files. It would probably provide wrong readdir (only based
198         on current content) or also a slow one (based on a recentfile written
199         after the call). But it would provide fast access to existing files. Or
200         one would deliberately allow slightly blurred answers based on some
201         sqlite reflection of the recentfiles.
203         * todo: write a variant of mirror() that combines two or more
204         recentfiles and treats them like one
206         * todo: signal handler to remove the tempfile
208 2008-07-24  Andreas J. Koenig  <andreas.koenig.7os6VVqR@franz.ak.mind.de>
210         * now that we have the symlink I forgot how it should be used in
211         practice.
213         * the z loop: add missing files to Z file. Just append them (instead of
214         prepending). So one guy prepends something from the Y file from time to
215         time and another guy appends something rather frequently. Collecting
216         pond. When Y merges into Z, things get epoch and the collecting pond
217         gets smaller. What exactly are "missing files"?
219         take note of current epoch of the alpha file, let's call it the
220         recent-ts
222         find all files on disk
224         remove all files registered in the recentworld up to recent-ts
226         remove all files that have been deleted after recent-ts according to
227         recentworld
229 2008-07-23  Andreas J. Koenig  <andreas.koenig.7os6VVqR@franz.ak.mind.de>
231         * rersyncrecent might be a cronjob with a (locked) state file which
232         contains things like after and maybe last z sync or such?
234         rrr-mirror might be an alternative name but how would we justify the
235         three Rs when there is no Re-Rsync-Recent?
237         With the --loop parameter it is an endless loop, without it is no loop.
238         At least this is simple.
240         * todo: new accssor z-interval specifies how often the Z file is updated
241         against the filesystem. We probably want no epoch stamp on these
242         entries. And we want to be able to filter the entries (e.g. no
243         by-modules and by-category tree)
245 2008-07-20  Andreas J. Koenig  <andreas.koenig.7os6VVqR@franz.ak.mind.de>
247         * Fill the Z file. gc or fsck or both. Somehow we must get the old files
248         into Z. We do not need the other files filled up with filesystem
249         contents though.
251         * need interface to query for a file in order to NOT call update on
252         PAUSE a second time within a short time.
254 2008-07-19  Andreas J. Koenig  <andreas.koenig.7os6VVqR@franz.ak.mind.de>
256         * recommended update interval? Makes no sense, is different for
257         different users.
259         * Moosify
261         Local Variables:
262         mode: change-log
263         change-log-default-name: "Todo"
264         tab-width: 2
265         left-margin: 2
266         End: