[elephant-devel] Too many files open

Kevin Y. Kim (Lists) kykim_lists at mac.com
Mon Mar 6 23:25:51 UTC 2006


Hi,

(Perhaps I'm going about this all wrong, but...)

I'm trying to populate a large number of Sleepycat databases.
I've created the necessary underlying directories.
What I'm attempting is something like this:

(defun populate-db (tree data-pairs)
     (mapcar #'(lambda (p) (setf (get-value (car p) tree) (cadr p)))  
data-pairs))

(mapcar #'(lambda (db)
              (with-open-store db
                  (setf btree (make-btree)
                  (add-to-root "tree" btree)
		 (populate-db *btree* list-of-data-pairs)))
         list-of-databases)

I have hundreds of databases, with each database having thousands of  
data-pairs.

So, after loading up around 150 databases, I get an error from  
Sleepycat that
I've got too many databases open.  I *assume* that even though I've  
wrapped
everything in the "with-open-store" call, the databases are not closing
because I've got a reference to a btree.  Is that correct?  If so, is  
there an
explicit way I can ensure that each database is closed before I move  
on to the
next one?

If anyone has alternate suggestions on how I should store this data,  
feel free to
pass them along.

Thanks,
-kevin




More information about the elephant-devel mailing list