(Illustration by Gaich Muramatsu)
A new release of librpc2, version 1.15, is now available. It fixes a nasty 'random' memory corruption case that has been there for a long time, but we started packing reintegration logs more efficiently and has now been the main cause for 'unexplainable' crashes and memory corruption for Coda clients during reintegration. Another important fix is that it adds an explicit yield to other threads when SFTP packets are received through the rpc2 socket. Because we were not giving SFTP threads a chance to run, a relatively fast client on a fast network would trigger a lot of packet loss during store operations. The effects of this were very subtle, Coda clients were doing a good job at 'hiding' the network problem. The main effect was probably that stores were taking considerably more time and network bandwidth than necessary. It also caused unnecessary disconnections followed by reintegration or server-server resolution. These performance problems and disconnections only happen when clients are using the 'masquerade' option which has been the default for newly installed clients since Coda-5.3.20. Luckily both of these problems are in the shared library and not in the stub generated code. Existing clients and servers do not need to be recompiled. Just install this new version of the library and restart. I've been running this code on our production servers for several days now and it is looking quite good. Average store rates went from several KB/s to several MB/s and the total number of ValidateAttrs calls are way down, indicating fewer disconnections even from clients that are mostly still using the old rpc2 libraries. I've put up the sources and precompiled binaries built for RedHat-5.1 and Debian, which are pretty much the machines that I have access to right now. Precompiled binaries for other distributions/platforms would be welcome. JanReceived on 2003-03-22 16:30:01