On Mon, Jun 16, 2008 at 11:51 AM, David F. Skoll <[EMAIL PROTECTED]>
wrote:

> Aecio Neto wrote:
>
> > Due to a network issue, freshclam was not able to connect to update
> > site.  Then, freshclam set virus db as locked and clamd was not
> > possible to read it and exit.  This happened twice this week.
>
> We've been hit by this a lot. :-(  It's really nasty because clamd removes
> the pid file when it exits, so our (old) monitoring script did not restart
> it (assuming that the admin had stopped it.)
>
> You do *not* want to hold a lock while waiting for the network.  The
> proper freshclam algorithm would be something like this.  (File names
> are illustrative only.)
>

Agree.
Freshclam should only lock virus db when it is *really* performing updates
it grabbed out there.


>
> 1) Hold a lock on /var/lock/freshclam.lock to avoid concurrent freshclams.
>
> 2) Copy the entire current database directory to a temporary directory.
>
> 3) Attempt to update the database in the temporary directory.  During this
> potentially time-consuming step, the main database is NOT locked and clamd
> continues happily on its way.
>
> 4) If step (3) succeeded: Lock /var/lock/clam-db.lock.  This lock
> applies to both clamd and freshclam.  Then rename the current database
> directory to old, and the temporary one to current.  Then release
> /var/lock/clam-db.lock.  Because the renaming is likely to be very
> quick, clamd won't be locked out of the database directory for very
> long.  The lock-holding time certainly won't depend on network
> conditions.
>
> 5) If step (4) succeeded: Delete the old database directory.
>
> 6) Release /var/lock/freshclam.lock
>

David, is this a change I have to do in my system or is this a proposal for
a new code?
_______________________________________________
Help us build a comprehensive ClamAV guide: visit http://wiki.clamav.net
http://www.clamav.net/support/ml

Reply via email to