Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Лок-файл захватывается до чтения конфигурации #376

Closed
evgkrsk opened this issue Jul 1, 2017 · 9 comments

Comments

@evgkrsk
Copy link

evgkrsk commented Jul 1, 2017

evg@thinkpad ~ $yandex-tank -f -v
/usr/lib64/python2.7/site-packages/pandas/core/computation/__init__.py:18: UserWarning: The installed version of numexpr 2.4.4.dev0 is not supported in pandas and will be not be used
The minimum supported version is 2.4.6

  ver=ver, min_ver=_MIN_NUMEXPR_VERSION), UserWarning)
2017-07-02 05:49:50,626 [ERROR] root cli.py:91	Exception: Lock file present, cannot continue
2017-07-02 05:49:50,628 [DEBUG] root cli.py:92	Exception: Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/yandextank/core/cli.py", line 87, in main
    worker.configure()
  File "/usr/lib/python2.7/site-packages/yandextank/core/consoleworker.py", line 190, in configure
    raise RuntimeError("Lock file present, cannot continue")
RuntimeError: Lock file present, cannot continue

[1]    22264 exit 1     yandex-tank -f -v
evg@thinkpad ~ $yandex-tank -f -v -c non-existing.ini
/usr/lib64/python2.7/site-packages/pandas/core/computation/__init__.py:18: UserWarning: The installed version of numexpr 2.4.4.dev0 is not supported in pandas and will be not be used
The minimum supported version is 2.4.6

  ver=ver, min_ver=_MIN_NUMEXPR_VERSION), UserWarning)
2017-07-02 05:49:58,689 [ERROR] root cli.py:91	Exception: Lock file present, cannot continue
2017-07-02 05:49:58,690 [DEBUG] root cli.py:92	Exception: Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/yandextank/core/cli.py", line 87, in main
    worker.configure()
  File "/usr/lib/python2.7/site-packages/yandextank/core/consoleworker.py", line 190, in configure
    raise RuntimeError("Lock file present, cannot continue")
RuntimeError: Lock file present, cannot continue

Пытался запустить танк от простого пользователя - вижу что не захватывается лок-файл. Прописывание в ~/.yandex-tank или местный .ini в секцию [tank] не помогает - локальный .ini-файл даже не обязан существовать.

@nnugumanov
Copy link
Contributor

nnugumanov commented Jul 3, 2017

опция -f говорит "если есть lock файл, не жди пока он исчезнет - вываливайся" - https://github.com/yandex/yandex-tank/blob/develop/yandextank/core/consoleworker.py#L280

либо у вас параллельно выполнял работу yandex-tank, либо остались следы от предыдущего запуска, который завершился нештатным образом - посмотрите в папку /var/lock/

@evgkrsk
Copy link
Author

evgkrsk commented Jul 3, 2017

Кажется, я не вполне ясно выразился. Я знаю, что делает "-f". Эта опция здесь только чтобы копировать весь выхлоп танка, т.е. для краткости.

Я хотел сказать, что использование танка от рядового пользователя (не рута; насколько помню. в документации нигде не указано требование запуска только от рута) затруднено, т.к. всегда пытаемся захватить лок в каталоге, доступном для записи только руту:

evg@thinkpad /var/lock $ls -lh
итого 4,0K
-rw-r--r-- 1 root root  22 июн 23 14:07 asound.state.lock
drwxr-xr-x 2 root root  40 июн 28 19:45 dmraid
drwx------ 2 root root  60 июн 23 14:07 iscsi
drwx------ 2 root root  40 июн 28 19:45 lvm
drwxrwx--- 2 root uucp  40 июн 23 14:07 serial
drwx------ 2 root root 100 июн 23 14:07 subsys
evg@thinkpad /var/lock $touch my-tank.lock
touch: невозможно выполнить touch для 'my-tank.lock': Отказано в доступе

и нельзя переопределить этот каталог через конфиг т.к. конфиг читается после попытки захвата лока (и вообще конфиг игнорируется и даже не обязан существовать). Приходится либо определять каталог аргументом при запуске либо запускать без лока вообще.

В распечатке выше видно, что ничего похожего на лок-файл танка от рута не писалось. Хотелось бы либо удобно запускать от обычного пользователя (с лок-файлом в доступном ему на запись месте) либо уточнить документацию если нужен обязательно root (хотя вроде не нужен).

@direvius
Copy link
Contributor

direvius commented Jul 4, 2017

Это правится сейчас в ветке develop.

@evgkrsk
Copy link
Author

evgkrsk commented Oct 26, 2017

Вижу что между тегами 1.9.2 и 1.9.3 что-то изменилось, стала выдаваться другая ошибка:

evg@thinkpad ~ $yandex-tank -f -v
Traceback (most recent call last):
  File "/usr/bin/yandex-tank", line 11, in <module>
    load_entry_point('yandextank==1.9.3', 'console_scripts', 'yandex-tank')()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 570, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2755, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2409, in load
    return self.resolve()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2415, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
ImportError: No module named yandextank.core.cli

(нужные файлы на диске конечно же есть).

@direvius
Copy link
Contributor

это что-то случилось с инсталляцией. Обычно решается переустановкой танка.

@evgkrsk
Copy link
Author

evgkrsk commented Oct 26, 2017

В каком смысле случилось? Я собираю пакет новой версии в дистрибутив и слежу за различиями в пакетах. Ставится именно то, что ставит "python setup.py install", без остатка. Даунгрейд до пакета из тега 1.9.2 - ошибка импорта меняется на Permission Denied в /var/lock (в отличии от RuntimeError в более старом танке).
Обновление обратно на 1.9.3 возвращает ошибку импорта, воспроизводится 100%.

Более того, запуск танка я проверяю и от свежесозданного пользователя, который ранее танком не пользовался. Опять же воспроизводится всегда.

@direvius
Copy link
Contributor

по какой-то причине новая версия не проинсталлилась в систему. Я не знаю, почему такое происходит, потому что у меня такого ни разу не было. Обычно, когда кто-нибудь на такое жалуется, я прихожу, сношу танк, обновляю python (если это мак, то brew install), обновляю pip, потом делаю sudo -H pip install yandex-tank -- и все начинает работать. Причин я не знаю. 1.9.3 в этом месте никак не отличается от 1.9.2. И 1.9.3 у нас раскатана в продакшн на нескольких десятках машин.

@evgkrsk
Copy link
Author

evgkrsk commented Oct 26, 2017

Проинсталлировалась, она есть на диске. Вопрос только в том, чего не хватает питону чтобы узреть её.

@evgkrsk
Copy link
Author

evgkrsk commented Jun 1, 2018

Отбой, в более новых версиях рассосалось...

@evgkrsk evgkrsk closed this as completed Jun 1, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants