chiark / gitweb /
debugging for thing that crashed
[innduct.git] / storage / tradspool / README.tradspool
1 This storage manager attempts to implement the 'traditional' INN storage
2 layout, i.e a message crossposted to alt.fan.james-brister and rec.pets.wombats
3 will be written as a file in
4         <patharticles>/alt/fan/james-brister/nnnnn
5 and a symlink pointing to the above file in
6         <patharticles>/rec/pets/wombats/mmmmmm
7 where nnnnn and mmmmmm are the article numbers that article has in each of 
8 those two newsgroups.  (Actually in the traditional spool form the link
9 could be either a symlink or a regular link).
10
11 The storage token data for a tradspool stored article is a 16-byte block.
12 The storage token contains two ints; the first one is a number
13 telling what the name of the "primary" newsgroup is for this article, the
14 second one telling what article number the article has in that newsgroup.
15 The mapping between newsgroup name and number is given by a database in
16 the file
17         <pathspool>/ts.ng.db
18 ; this file is a straight ASCII file listing newsgroup names and
19 numbers, and will be automatically generated by innd if one does not
20 exist already.  This database is read in automatically by any program
21 that uses this storage manager module, and is updated by innd whenever
22 a new newsgroup is encountered.  Other programs (like innfeed) check
23 the mod time of that database every 5 minutes to see if they need to
24 recheck it for any new newsgroups that might have been added.  Should
25 the database become corrupted, simply shutting down news, removing the
26 database, and doing a makehistory will recreate the database.  It
27 should, in principle, be possible to write a perl script to recreate
28 just the database from just the spool files and history files without
29 doing a full makehistory. 
30
31 Currently the storage manager code works, although not perhaps as fast 
32 as it could.   The expiration code is somewhat unwieldy; since the storage
33 token does not have enough space to hold all the newsgroups an article 
34 is posted to, when expiration is done SMCancel() has to open the article
35 to find out what other newsgroups the article is posted to.  Eurggh. 
36 Suggestions for a better scheme are welcome. 
37
38 Other problems of note: the storage manager code has no way to get to the 
39 'DoLinks' (-L) flag setting of innd, so currently you can't use the
40 "crosspost" program with tradspool.  I guess the proper thing to do would be
41 to make DoLinks a config option in storage.conf instead, but I haven't
42 done that yet. 
43