Just a sample of the Echomail archive
[ << oldest | < older | list | newer > | newest >> ]
|  Message 107  |
|  andrew clarke to All  |
|  timEd message base locking (or lack ther  |
|  28 Oct 12 07:02:32  |
 
25 Oct 12 04:45, I wrote to all:
ac> Or I could just not use Squish format, I suppose. On modern PCs with
ac> new filesystems, having few thousand *.MSG files in a single directory
ac> is not a big deal.
Actually in hindsight with *.MSG there's still a window where a tosser can
overwrite a message editor's newly-created .MSG file. The problem is that both
programs need to find the highest numbered .MSG file first before creating the
new message, and the time this takes even on a modern PC that could be quite
high - in the order of several seconds if the CPU is loaded, or the filesystem
is on a remote machine. During this window it's possible for the other program
to generate a new message, so the "highest message" counter can get out of
sync between the two programs. The higher the number of messages the more
likely it is to occur.
Just out of curiosity I hacked together two short Python programs. One to
create the .msg files initially, and the other to look for the highest
numbered .msg file. On my system both of these programs take less than a
second to run, but this is on a fast CPU on a local filesystem.
#!/usr/bin/env python
# Create 5000 files named 1.msg to 5000.msg
for i in range(5000):
fn = '%d.msg' % (i + 1, )
fp = open(fn, 'w')
fp.close()
#!/usr/bin/env python
# Find the highest numbered .msg file in a directory
import os, os.path
highest = 0
dp = os.listdir('.')
for fn in dp:
filename, ext = os.path.splitext(fn)
if ext == '.msg':
n = 0
try:
n = int(filename)
except ValueError:
pass
if n > highest:
highest = n
print highest
--- GoldED+/BSD 1.1.5-b20110223-b20110223
* Origin: Blizzard of Ozz, Melbourne, Victoria, Australia (3:633/267)
|
[ << oldest | < older | list | newer > | newest >> ]