Use a prune factor when pruning the registry over the hard limit, instead of 10.
authorTed Zlatanov <tzz@lifelogs.com>
Fri, 13 May 2011 04:05:01 +0000 (23:05 -0500)
committerTed Zlatanov <tzz@lifelogs.com>
Fri, 13 May 2011 04:05:01 +0000 (23:05 -0500)
* gnus-registry.el (gnus-registry-fixup-registry): Set prune-factor to
0.1 expicitly.

* registry.el (prune-factor): New initialization parameter defaulting
to 0.1.
(registry-prune-hard): Use it.

lisp/ChangeLog
lisp/gnus-registry.el
lisp/registry.el

index ae4bfad..60182e1 100644 (file)
@@ -1,3 +1,12 @@
+2011-05-13  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * registry.el (prune-factor): New initialization parameter defaulting
+       to 0.1.
+       (registry-prune-hard): Use it.
+
+       * gnus-registry.el (gnus-registry-fixup-registry): Set prune-factor to
+       0.1 expicitly.
+
 2011-05-13  Glenn Morris  <rgm@gnu.org>
 
        * message.el (message-send-mail-with-sendmail): Assume sendmail-program
index 02e4ce7..25d84b1 100644 (file)
@@ -244,6 +244,8 @@ the Bit Bucket."
       (oset db :max-hard
             (or gnus-registry-max-entries
                 most-positive-fixnum))
+      (oset db :prune-factor
+            0.1)
       (oset db :max-soft
             (or gnus-registry-max-pruned-entries
                 most-positive-fixnum))
index b5cc3ec..8e158f7 100644 (file)
              :type integer
              :custom integer
              :documentation "Prune as much as possible to get to this size.")
+   (prune-factor
+    :initarg :prune-factor
+    :initform 0.1
+    :type float
+    :custom float
+    :documentation "At the max-hard limit, prune size * this entries.")
    (tracked :initarg :tracked
             :initform nil
             :type t
@@ -357,11 +363,12 @@ Proposes only entries without the :precious keys."
 
   (defmethod registry-prune-hard-candidates ((db registry-db))
     "Collects pruning candidates from the registry-db object THIS.
-Proposes any entries over the max-hard limit minus 10."
+Proposes any entries over the max-hard limit minus size * prune-factor."
     (let* ((data (oref db :data))
-           ;; prune to 10 below the max-hard limit so we're not
-           ;; pruning all the time
-          (limit (- (oref db :max-hard) 10))
+           ;; prune to (size * prune-factor) below the max-hard limit so
+           ;; we're not pruning all the time
+          (limit (max 0 (- (oref db :max-hard)
+                            (* (registry-size db) (oref db :prune-factor)))))
           (candidates (loop for k being the hash-keys of data
                             collect k)))
       (list limit candidates))))