Revert "irclib: Apply changes to supybot.protocols.irc.maxHistoryLength immediately."

This reverts commit 1d2eefe880.

IrcState instances are created more than five times a second! Imagine how much
memory is used (hint: 300MB five minutes after startup).
We should first try to reduce this amount.
This commit is contained in:
Valentin Lorentz 2012-12-27 16:06:01 +00:00
parent 1d2eefe880
commit 79eeb8eb95
8 changed files with 25 additions and 19 deletions

View File

@ -955,7 +955,8 @@ msgstr ""
#: ../src/conf.py:995 #: ../src/conf.py:995
msgid "" msgid ""
"Determines how many old messages the bot will\n" "Determines how many old messages the bot will\n"
" keep around in its history." " keep around in its history. Changing this variable will not take effect\n"
" until the bot is restarted."
msgstr "" msgstr ""
#: ../src/conf.py:1000 #: ../src/conf.py:1000

View File

@ -1503,9 +1503,13 @@ msgstr ""
#: src/conf.py:1019 #: src/conf.py:1019
msgid "" msgid ""
"Determines how many old messages the bot will\n" "Determines how many old messages the bot will\n"
" keep around in its history." " keep around in its history. Changing this variable will not take "
"effect\n"
" until the bot is restarted."
msgstr "" msgstr ""
"Määrittää kuinka vanhoja viestejä botti pitää historiassaan." "Määrittää kuinka vanhoja viestejä botti pitää historiassaan. Tämän "
"asetusarvon\n"
" muuttaminen ei vaikuta ennen uudelleenkäynnistystä."
#: src/conf.py:1024 #: src/conf.py:1024
#, fuzzy #, fuzzy

View File

@ -992,8 +992,9 @@ msgstr "Détermine quelle vhost le bot bindera avant de se connecter au serve
#: ../src/conf.py:1019 #: ../src/conf.py:1019
msgid "" msgid ""
"Determines how many old messages the bot will\n" "Determines how many old messages the bot will\n"
" keep around in its history." " keep around in its history. Changing this variable will not take effect\n"
msgstr "Détermine combien de vieux messages le bot gardera dans son historique." " until the bot is restarted."
msgstr "Détermine combien de vieux messages le bot gardera dans son historique. Changer cette variable ne prend effet qu'après avoir redémarré le bot."
#: ../src/conf.py:1024 #: ../src/conf.py:1024
msgid "" msgid ""

View File

@ -1183,9 +1183,11 @@ msgstr ""
#: src/conf.py:1019 #: src/conf.py:1019
msgid "" msgid ""
"Determines how many old messages the bot will\n" "Determines how many old messages the bot will\n"
" keep around in its history." " keep around in its history. Changing this variable will not take effect\n"
" until the bot is restarted."
msgstr "" msgstr ""
"Determina quanti messaggi vecchi terrà il bot nella cronologia." "Determina quanti messaggi vecchi terrà il bot nella cronologia. La modifica\n"
" di questa variabile non avrà effetto finché non si riavvia il bot."
#: src/conf.py:1024 #: src/conf.py:1024
msgid "" msgid ""

View File

@ -982,7 +982,8 @@ msgstr ""
#: src/conf.py:1019 #: src/conf.py:1019
msgid "" msgid ""
"Determines how many old messages the bot will\n" "Determines how many old messages the bot will\n"
" keep around in its history." " keep around in its history. Changing this variable will not take effect\n"
" until the bot is restarted."
msgstr "" msgstr ""
#: src/conf.py:1024 #: src/conf.py:1024

View File

@ -1038,7 +1038,8 @@ registerGlobalValue(supybot.protocols.irc, 'vhost',
registerGlobalValue(supybot.protocols.irc, 'maxHistoryLength', registerGlobalValue(supybot.protocols.irc, 'maxHistoryLength',
registry.Integer(1000, _("""Determines how many old messages the bot will registry.Integer(1000, _("""Determines how many old messages the bot will
keep around in its history."""))) keep around in its history. Changing this variable will not take effect
until the bot is restarted.""")))
registerGlobalValue(supybot.protocols.irc, 'throttleTime', registerGlobalValue(supybot.protocols.irc, 'throttleTime',
registry.Float(1.0, _("""A floating point number of seconds to throttle registry.Float(1.0, _("""A floating point number of seconds to throttle

View File

@ -346,9 +346,6 @@ class IrcState(IrcCommandDispatcher):
nicksToHostmasks=None, channels=None): nicksToHostmasks=None, channels=None):
if history is None: if history is None:
history = RingBuffer(conf.supybot.protocols.irc.maxHistoryLength()) history = RingBuffer(conf.supybot.protocols.irc.maxHistoryLength())
def resize_history():
self.history.resize(conf.supybot.protocols.irc.maxHistoryLength())
conf.supybot.protocols.irc.maxHistoryLength.addCallback(resize_history)
if supported is None: if supported is None:
supported = utils.InsensitivePreservingDict() supported = utils.InsensitivePreservingDict()
if nicksToHostmasks is None: if nicksToHostmasks is None:

View File

@ -36,8 +36,10 @@ import supybot.conf as conf
import supybot.irclib as irclib import supybot.irclib as irclib
import supybot.ircmsgs as ircmsgs import supybot.ircmsgs as ircmsgs
rawmsgs = 'foo bar baz qux quux corge grault garply waldo fred'.split() # The test framework used to provide these, but not it doesn't. We'll add
msgs = map(lambda x:ircmsgs.privmsg('#channel', x), rawmsgs) # messages to as we find bugs (if indeed we find bugs).
msgs = []
rawmsgs = []
class IrcMsgQueueTestCase(SupyTestCase): class IrcMsgQueueTestCase(SupyTestCase):
mode = ircmsgs.op('#foo', 'jemfinch') mode = ircmsgs.op('#foo', 'jemfinch')
@ -256,7 +258,8 @@ class IrcStateTestCase(SupyTestCase):
self.failUnless(st.channels['#foo'].isOp('baz')) self.failUnless(st.channels['#foo'].isOp('baz'))
def testHistory(self): def testHistory(self):
assert len(msgs) >= 10 if len(msgs) < 10:
return
maxHistoryLength = conf.supybot.protocols.irc.maxHistoryLength maxHistoryLength = conf.supybot.protocols.irc.maxHistoryLength
with maxHistoryLength.context(10): with maxHistoryLength.context(10):
state = irclib.IrcState() state = irclib.IrcState()
@ -269,10 +272,6 @@ class IrcStateTestCase(SupyTestCase):
self.assertEqual(len(state.history), maxHistoryLength()) self.assertEqual(len(state.history), maxHistoryLength())
self.assertEqual(list(state.history), self.assertEqual(list(state.history),
msgs[len(msgs) - maxHistoryLength():]) msgs[len(msgs) - maxHistoryLength():])
with maxHistoryLength.context(5):
self.assertEqual(len(state.history), maxHistoryLength())
self.assertEqual(list(state.history),
msgs[len(msgs) - maxHistoryLength():])
def testWasteland005(self): def testWasteland005(self):
state = irclib.IrcState() state = irclib.IrcState()