$Id: ChangeLog,v 1.11 2003/07/02 02:40:15 mmondor Exp $ Release: mmstatd 0.0.8 devl Date : July 1, 2003 By : Matthew Mondor * Bug fixes - Although unlikely to occur, the underlaying mmhash(3) library comported a bug which could cause the key rotation to force a table rehash during an iteration. This could cause some matching keys to not be processed. Both hashtable_unlink() and hashtable_link() will now refrain from causing table rehashes when called from within an iteration for safety. - Some annoying debugging printf(3) was removed from the mmstat(8) client, it was left out as part of a previous test. - When alot of mmstat() operations were performed into a transaction using mmstat_transact(), it was possible to exceed the maximum allowed message size for the socket transmition to the mmstatd(8) server. We now use 4.2BSD setsockopt(2) in both mmstat(3) client API and mmstatd(8) to set the size of the socket buffer to fix this problem. * Other - The mmstat(3) key names were modified to be '|' separated rather than '.' separated. Although I have been trying to avoid such a change which obviously requires fixing alot of scripts I am using, it was proven with time that the '.' character was too widely used and that '|' was ideal as a replacement. It is not hard to use a script to use the mmstat(8) reset command and convert all old entries to the new type if necessary. As a result, filenames which comport '.' characters for which counters are maintained are much better to handle and to isolate. The same applies to IP addresses. This in itself did not require any changes to the mmstat software, but mmstat(3) and mmstatd(8) users should be aware of this. * Important - The maximum key name length now was bumped from 128 to 256 bytes. As a result, a special log file synchronization will be required as was the case for mmstatd 0.0.7 upgrade. This also requires mmstat clients using the mmstat(3) API to be recompiled. See the ChangeLog notes on mmstatd 0.0.7 release about this synchronization issue when upgrading. - The maximum number of protected mmstat() calls within an mmstat_transact() transaction has been bumped from 16 to 32. This requires recompilation of mmstat(3) clients and server. Release: mmstatd 0.0.7 devl Date : June 19, 2003 By : Matthew Mondor * Important - The recovery log format has changed. This means that when upgrading, you should first make sure that your actual database is in sync. There are two ways to do this a) kill mmstatd using SIGTERM and restart it again, or b) perform any rotation operation, which forces a full sync. You can then kill mmstatd and upgrade it. Failure to follow these instructions may result in mmstatd crashing, and yielding undefined behavior. Moreover, both mmstat clients (the shell standard mmstat client, as well as any other application using the mmstat(3) interface, and the mmstatd server need to be recompiled when upgrading. - MMSTAT, MMSTATENT and MMSTATRES data types were changed to mmstat_t, mmstatent_t and mmstatres_t for consistency with other mmsoftware style. This will require minor modifications to software using the mmstat(3) API. - The GROUPS directive now expects groups to be comma-separated instead of space-separated. The quotes then of course also become optional if multiple groups are specified. This was made because that mmreadcfg(3) library is also used by other of my projects for which comma-separated groups were required. * Performance enhancement - The system used to hold the keys into a sequencial linked list using a 64-bit hash coupled with the key strings to make the list lookup faster. Although this worked fine and was ideal for very small sets, it would become a bottleneck for the librarian process when in heavy use with a very large number of entries. It now uses a 32-bit string hash function, but also a bucket-based hashing algorithm to store the entries which provides fast indexing, considerably speeding up lookups. Moreover, the 32-bit string hashing function collisions will not cause storage collisions and is faster than the 64-bit one used to be on 32-bit systems. The mmhash(3) library is used for this, which was imported from my Xisop project. * Bug fixes - The default shell mmstat client would always force autoflush on updates even if the 'a' flag was not specified. - Because full disk database synchronization happen rarely, when mmstatd is stopped and restarted, if alot of recent modifications were made which are in the recover logs, their modification timestamps would only be considered when recovering from those logs at mmstatd startup. The time of each operation is now stored within the logs as well, so that at recovery be applied the real modification time to the affected keys. Release: mmstatd 0.0.6 devl Date : January 9, 2003 By : Matthew Mondor * Bug fix - Delete operations performed on unexisting keys would crash the daemon, this was fixed. * New features - mmstat_init() was modifed in a way that autoflush keys (which delete themselves automatically when reaching zero) can now consist of both volatile or persistant keys. - The various STAT_RESET, STAT_UPDATE and STAT_DELETE operations can now be atomically performed on all keys matching a supplied '*' and '?' wildcard pattern as well. - The mmstat(8) utility now supports 'hreport' which reports more readable results for humans (although less verbose). - If compiled with -DNODROPPRIVS it will not attempt to perform any credential changes before launching. In which case it will also refuse to be started by the superuser. Userful for non-privileged users. - The mmstatd, mmstat(3) library and as such mmstat(8) utility will now use the MMSTATCONF environment variable if set to determine which configuration file to use. This permits several non-privileged users to each run their own mmstat service for instance. - mmstatd can now be specified configuration file to use on the command line arguments. Release: mmstatd 0.0.7 devl Date : April 25, 2003 By : Matthew Mondor * Minor interface change - MMSTAT, MMSTATENT and MMSTATRES data types were changed to mmstat_t, mmstatent_t and mmstatres_t for consistency with other mmsoftware style.