From 652aa4650422227f0e510a787747fcab2f452292 Mon Sep 17 00:00:00 2001 From: Teodor Zlatanov Date: Fri, 13 May 2011 04:12:37 +0000 Subject: [PATCH] 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. --- lisp/gnus/ChangeLog | 9 +++++++++ lisp/gnus/gnus-registry.el | 2 ++ lisp/gnus/registry.el | 15 +++++++++++---- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index ceea1e0375f..6f4bc302570 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,12 @@ +2011-05-13 Teodor Zlatanov + + * 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 * message.el (message-send-mail-with-sendmail): Assume sendmail-program diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el index 02e4ce7e2e6..25d84b11d41 100644 --- a/lisp/gnus/gnus-registry.el +++ b/lisp/gnus/gnus-registry.el @@ -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)) diff --git a/lisp/gnus/registry.el b/lisp/gnus/registry.el index b5cc3ec0e2b..8e158f7ca0f 100644 --- a/lisp/gnus/registry.el +++ b/lisp/gnus/registry.el @@ -116,6 +116,12 @@ :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)))) -- 2.11.4.GIT