← All posts tagged twisted

binary

Очередной фейл в твистеде: искал, почему же у j2j всё ещё течёт память. Оказалось, проблема в Twisted: его функция internJID (http://twistedmatrix.com/documents/current/api/twisted.words.protocols.jabber.jid.html#internJID) не имеет нормального описания, но нужна, судя по всему, для кеширования JIDов, чтобы не делать им каждый раз stringprep, экономя таким образом процессорное время. (Иного объяснения я не нашёл.) Так вот, эта функция никогда не очищает кеш. А так как JIDов через j2j проходит достаточно много, через три дня работы их собирается порядка 40К, на ещё более нагруженных сервисах ситуация будет ещё плачевнее (особенно, если сервис будет без регистрации, а пользоваться им будут люди с огромного к-ва разных серверов.) Поэтому, для теста, сваял патчик, который очищает JIDы, не использовавшиеся в течение 10 минут. Теперь, вроде бы, ситуация стабилизировалась. По-хорошему, там бы использовать memcached и не выпендриваться. Если у кого-то есть такая же проблема и желание протестировать, это ли её причина, обратитесь ко мне за патчем.

Тикет писать буду, но, если честно, даже не знаю, как бы описать проблему так, чтобы на неё обратили внимание, т.к. они вообще ни на что не обращают внимания.

binary

Тихо и незаметно вышел новый Twisted. Где посмотреть Changelog я не нашёл, кто-нибудь знает?
Надо затестить, реально ли хоть на этом запускать эти ваши жабьи транспорты...

binary

Пренеприятная бага с постоянным вылетанием J2J уже пофикшена в Twisted 10.2.0. Для него никаких дополнительных патчей уже не требуется. Советую всем обновиться, причём если есть любые транспорты/боты на Twisted.

binary

нашёл баг в твистеде, от которого j2j падает на кривых станзах. лечится так:

--- Twisted-10.0.0/twisted/words/xish/domish.py 2008-10-29 23:17:26.000000000 +0300
+++ twisted/words/xish/domish.py 2010-05-15 22:22:28.000000000 +0400
@@ -762,6 +762,8 @@
qname = name.split(" ")
if len(qname) == 1:
qname = ('', name)
+ else:
+ qname = (qname[0], ' '.join(qname[1:]))

# Process attributes
for k, v in attrs.items():

кто юзает j2j или любые транспорты на twisted, советую пропатчить. есть ли смысл писать тикет им в трак, даже не знаю