Problems with a large hash table

Vernon Schryver vjs@calcite.rhyolite.com
Mon Nov 26 15:51:51 UTC 2001


> From: "Mediratta, Bharat" <bharat@fusionone.com>

> Today I started getting the following message in my syslog,
> using v1.0.34:
>
> starting `/usr/local/dcc/libexec -R -i 1003 -h /usr/local/dcc
> execlp(/usr/local/dcc/libexec -R -i 1003 -h /usr/local/dcc: Permission
> denied
>
> This is weird.  For starters, "libexec" is a directory, not a
> program.  Perhaps I'm reading the output wrong, though.

In verseion 1.0.34 I broke the mechanism that dccd uses to run dbclean
to expand the hash table.  The CHANGES file includes this about
version 1.0.35:

]   fix recently introduced bug that kept dccd from automatically
]	running dbclean to expand the database.

>                                                          So,
> I stop my dccd using cdcc.  Then when I try to restart dccd
> I get the following message:
>
> /usr/local/dcc/dcc_db.hash is filled with 303101 entries
>
> And then dccd fails to start.  I check in my /usr/local/dcc 
> directory and I see that there's a 30Mb dcc_db file, a 30Mb 
> dcc_db-old file and no dcc_db.hash file.  Hmm.  I go and get 
> 1.0.36 and install it and try to start dccd with that version.
> Same error.  So I run "dbclean -S" (which I never do normally) 
> and it churns away for a while  generating:
>
> 1.0.36 expired 118152 records and 118171 checksums in /usr/local/dcc/dcc_db
> hashed 132654 records containing 971410 checksums, compressed 0 records
> 1220608 hash entries total, 303089 or 24% used
>
> Now I have the 30Mb dcc_db files but I also have a 13Mb dcc_db.hash
> file.  And now I can start dccd.
>
> So my questions are:
> 1. What did I do wrong?
> 2. What can I do to prevent it from happening again?
> ...

My guess is:

   1a. you are (or were) not running the cron job that expires old
      database entries
   1b. eventually the hash table in the database filled up
   1c.. the bug in 1.0.34 kept dccd from automatically telling
      dbclean to expand the hash table

The cron job is probably not running to trim the database because
it has not been installed (step #5 in INSTALL.html or .txt) or a
bug also in 1.0.34.


Vernon Schryver    vjs@rhyolite.com



More information about the DCC mailing list

Contact vjs@rhyolite.com by mail or use the form.