1. oproxyctl — утилита управления проксёй. Пока умеет корректно останавливать, показывать/сбрасывать статистику.
2. Порт под FreeBSD. Это удивительно, но под фрюхой прокся вываливалась с исключениями о deadlock’ах в мутексах. И это правильно, там алгоритмически иначе быть не может. Почему этого не происходило под Linux — фиг знает. А ведь и там вываливалась иногда с этим, но не в этих местах кода…
3. Полная поддержка KeepAlive. Сводится к тому, что прокси теперь не жалуется в логи, если в процессе ожидания команды от клиента случился таймаут. И вообще, логи оставлены практически только для ошибок.
4. Исправлено несколько разного рода ошибок.
В общем, ничего интересного. Дальше в планах написание балансировщика для mysql_proxy и конфиг. Конфиг — это большая тема. Там должен быть элемент ЯП. И что этот язык должен уметь, ещё надо подумать.
#1 by RedChrom on December 3rd, 2008
Дык, парсер конфига должен определённо представлять из себя маленький интерпретатор схемы :)
#2 by John Lepikhin on December 3rd, 2008
Ну и нафига мне ваши схемы? Я же не собираюсь писать интерпретатор конфига, на котором можно будет написать интерпретатор конфига, на котором можно будет написать интер… А иных ощутимых достоинств у синтаксиса Лиспа применительно к данной задаче я, честно говоря, особо-то и не вижу.
#3 by RedChrom on December 3rd, 2008
Ты углубляешься в рекурсию, достаточно написать интерпретатор схемы, на на схеме уже написать DSL для специфических задачь конфигурации. Ну там хтровыебаные правила фильтрации и т.д. и т.п. :)
#4 by John Lepikhin on December 4th, 2008
А теперь вопрос: зачем мне для написания DSL интерпретатор Схемы? На Окамле это делается не менее просто.
#5 by Stas on December 27th, 2008
Эм, а что если сделать также как к примеру в ejabberd или xmonad, конфиг на самом языке? С некоторым уровнем абстракции конечно.
Просто не понимаю, зачем отдельный интерпретатор придумывать, уж лучше тогда заэмбеддить Lua какой-нибудь.
#6 by John Lepikhin on December 27th, 2008
На самом языке нельзя, ибо распространяется только бинарная версия. А интерпретатор слишком раздует бинарник. Это первое. Второе — к вопросу почему не подойдёт LUA и прочее — это всё-таки языки общего назначения. Мне не нужен в конфиге какой-то шибко навороченный язык. Нужен сильно специфичный, позволяющий красиво и кратко описать вещи, типа “множество бэкендов”:
backend databases1 {
server {
socket “/tmp/mysql.sock”
priority 10
}
server {
ip “10.1.1.1″
priority 5
}
}
if (protocol = mysql && user infile “/etc/active_mysql_users”) {
backend databases1;
}
Что-то типа этого. Т.е. я с трудом себе представляю, где там понадобится каррирование, tail-recursion, объекты, императивщина и другие радости больших языков.
#7 by Stas on December 27th, 2008
Погодь, разве окамл не умеет динамически подгружать исходники, или я тебя не понял?
P.S. Давно у тебя юзер пики съезжают? :)
#8 by John Lepikhin on December 28th, 2008
Умеет, но это надо toplevel вкопиливать. Со всеми вытекающими (сейчас бинарник весит 300KB, будет весить в несколько раз больше).
Юзерпики съезжают с момента основания :) Я уже давно косо посматриваю на все эти тормозные и глючные Wordpress’ы. Но альтернатив пока слишком-то и не вижу.