чуть-чуть обновлений


1. oproxyctl — утилита управления проксёй. Пока умеет корректно останавливать, показывать/сбрасывать статистику.

2. Порт под FreeBSD. Это удивительно, но под фрюхой прокся вываливалась с исключениями о deadlock’ах в мутексах. И это правильно, там алгоритмически иначе быть не может. Почему этого не происходило под Linux — фиг знает. А ведь и там вываливалась иногда с этим, но не в этих местах кода…

3. Полная поддержка KeepAlive. Сводится к тому, что прокси теперь не жалуется в логи, если в процессе ожидания команды от клиента случился таймаут. И вообще, логи оставлены практически только для ошибок.

4.  Исправлено несколько разного рода ошибок.

В общем, ничего интересного. Дальше в планах написание балансировщика для mysql_proxy и конфиг. Конфиг — это большая тема. Там должен быть элемент ЯП. И что этот язык должен уметь, ещё надо подумать.

  1. #1 by RedChrom on December 3rd, 2008

    Дык, парсер конфига должен определённо представлять из себя маленький интерпретатор схемы :)

  2. #2 by John Lepikhin on December 3rd, 2008

    Ну и нафига мне ваши схемы? Я же не собираюсь писать интерпретатор конфига, на котором можно будет написать интерпретатор конфига, на котором можно будет написать интер… А иных ощутимых достоинств у синтаксиса Лиспа применительно к данной задаче я, честно говоря, особо-то и не вижу.

  3. #3 by RedChrom on December 3rd, 2008

    Ты углубляешься в рекурсию, достаточно написать интерпретатор схемы, на на схеме уже написать DSL для специфических задачь конфигурации. Ну там хтровыебаные правила фильтрации и т.д. и т.п. :)

  4. #4 by John Lepikhin on December 4th, 2008

    А теперь вопрос: зачем мне для написания DSL интерпретатор Схемы? На Окамле это делается не менее просто.

  5. #5 by Stas on December 27th, 2008

    Эм, а что если сделать также как к примеру в ejabberd или xmonad, конфиг на самом языке? С некоторым уровнем абстракции конечно.
    Просто не понимаю, зачем отдельный интерпретатор придумывать, уж лучше тогда заэмбеддить Lua какой-нибудь.

  6. #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. #7 by Stas on December 27th, 2008

    Погодь, разве окамл не умеет динамически подгружать исходники, или я тебя не понял?

    P.S. Давно у тебя юзер пики съезжают? :)

  8. #8 by John Lepikhin on December 28th, 2008

    Умеет, но это надо toplevel вкопиливать. Со всеми вытекающими (сейчас бинарник весит 300KB, будет весить в несколько раз больше).

    Юзерпики съезжают с момента основания :) Я уже давно косо посматриваю на все эти тормозные и глючные Wordpress’ы. Но альтернатив пока слишком-то и не вижу.

(will not be published)

  1. No trackbacks yet.