Odoo 11 пустая страница в конце - PullRequest
0 голосов
/ 10 января 2019

Проблема

В Odoo Back-end иногда окно отображает только элементы меню, остальная часть экрана остается пустой.
Нажатие на любое из этого меню изменит URL на https://my_server_ip/web?debug#menu_id=68&action=
Единственное, что изменится, это значение menu_id, но значение action останется пустым.

Сначала он думал, что когда обновляю страницу, на которой я уже был. Но я не могу воспроизвести ошибку последовательно (как только она произошла, она воспроизводится каждый раз, но если я очищаю кеш / куки, которые решают проблему в течение небольшого времени, проблема будет воспроизводиться в какой-то момент, но я не могу найти поведение, чтобы воспроизвести его, когда я хочу. Это просто произойдет в какой-то случайный пункт) Это происходит через некоторое время, иногда через час использования, иногда через две страницы. Иногда без проблем в течение дня, но завтра с первой попытки, ошибка повторяется.

Пробные решения

Вот подходящее решение:

  1. Очистить кеш и куки.
  2. Перезагрузить сервер
  3. Удаление всех записей в ir_attachment, которые содержат web/content. (Как рекомендовано для проблем с Odoo git).
  4. Создание новой виртуальной машины с нуля, не связанной с ошибочной виртуальной машиной Odoo, установите Postgres и Odoo на эту новую виртуальную машину. Затем переустановите все установленные модули.

Влияние вышеуказанных решений

В том же порядке:

  1. Проблема решена, но происходит снова несколько раз спустя.
  2. Обычно не работает само по себе, но иногда работало.
  3. Я думаю это сработало после выполнения этой операции и перезагрузки сервера, но не может воспроизвести ошибку, чтобы протестировать ее прямо сейчас. Когда ошибка появится снова, я попытаюсь отредактировать, чтобы подтвердить, что эта работа.
  4. Поведение машины такое же. Сначала это работало, но через некоторое время ошибка началась снова.

Конфигурация

  • Версия Odoo: Odoo 11.0-20190108 (Community Edition)
  • ОС: Debian stretch
  • Установлены модули сообщества:
    • backend_theme_v11
    • base_location
    • base_location_geonames_import
    • send_sms
    • web_responsive
  • Также установлен пользовательский модуль, разработанный для этой миссии.
  • ВМ установлена ​​на Proxmox
  • Сервис Nginx

Содержимое odoo.conf

; This is the password that allows database operations:
; admin_passwd = [admin_password]
db_host = False
db_port = False
db_user = odoo
db_password = [db_password]
addons_path = /usr/lib/python3/dist-packages/odoo/addons,/opt/odoo/modules

limit_memory_hard = 1677721600
limit_memory_soft = 629145600
limit_request = 8192
limit_time_cpu = 600
limit_time_real = 1200
max_cron_threads = 1
workers = 5

# HTTP CONFIG
proxy_mode = True

xmlrpc = True
xmlrpc_interface = 127.0.0.1
netrpc_interface = 127.0.0.1

Развертывание Https и развертывание с длинным опросом

Эта документация использовалась для развертывания Https и longpolling

Вход

Журналы, созданные на Odoo при возникновении ошибки

2019-01-10 09: 56: 01,883 17076 INFO Developpement werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:01] "GET / web HTTP / 1.0" 200 -
2019 -01-10 09: 56: 02,262 17076 INFO Developmentpement werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:02] "GET /web/image/ir.ui.menu/98/web_icon_data HTTP / 1.0 "304 -
2019-01-10 09: 56: 02,294 17076 ИНФОРМАЦИЯ Developingment werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:02] "GET /web/image/ir.ui.menu/103/web_icon_data HTTP / 1,0 "304 -
2019-01-10 09: 56: 02,327 17076 ИНФОРМАЦИЯ Developingment werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:02] "GET /web/image/ir.ui.menu/155/web_icon_data HTTP / 1,0 "304 -
2019-01-10 09: 56: 02,360 17076 ИНФОРМАЦИЯ werkzeug для разработчиков: 127.0.0.1 - - [10 / Jan / 2019 09:56:02] "GET /web/image/ir.ui.menu/68/web_icon_data HTTP / 1,0 "304 -
2019-01-10 09: 56: 02,465 17076 ИНФОРМАЦИЯ Developingment werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:02] "GET /web/image/ir.ui.menu/109/web_icon_data HTTP / 1,0 "304 -
2019-01-10 09: 56: 02,523 17076 ИНФОРМАЦИЯ Developingment werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:02] "GET /web/image/ir.ui.menu/133/web_icon_data HTTP / 1,0 "304 -
2019-01-10 09: 56: 02,545 17075 INFO Developpement odoo.modules.registry: делает недействительными все кэши моделей после сигнализации базы данных.
2019-01-10 09: 56: 02,559 17075 ИНФОРМАЦИЯ Developingment werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:02] "GET /web/image/ir.ui.menu/142/web_icon_data HTTP / 1,0 "304 -
2019-01-10 09: 56: 02,595 17075 ИНФОРМАЦИЯ Developingment werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:02] "GET /web/image/ir.ui.menu/140/web_icon_data HTTP / 1,0 "304 -
2019-01-10 09: 56: 02,616 17073 INFO Developpement odoo.modules.registry: делает недействительными все кэши моделей после сигнализации базы данных.
2019-01-10 09: 56: 02,631 17073 ИНФОРМАЦИЯ Developingment werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:02] "GET /web/image/ir.ui.menu/144/web_icon_data HTTP / 1,0 "304 -
2019-01-10 09: 56: 02,653 17077 INFO Developpement odoo.modules.registry: делает недействительными все кэши моделей после сигнализации базы данных.
2019-01-10 09: 56: 02,668 17077 ИНФОРМАЦИЯ Developingment werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:02] "GET /web/image/ir.ui.menu/129/web_icon_data HTTP / 1,0 "200 -
2019-01-10 09: 56: 02,693 17074 INFO Developpement odoo.modules.registry: делает недействительными все кэши моделей после сигнализации базы данных.
2019-01-10 09: 56: 02,710 17075 INFO Developpement werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:02] "GET / web / webclient / qweb? Mods = web, base, bus, web_tour , почта, sales_team, календарь, web_planner, контакты, crm, note, custom_module1, auth_signup, web_responsive, backend_theme_v11, base_import, base_location, base_location_geonames_import, iap, send_sms, sms, web_diagram, web_ash_d_d_t_t_t_t_g_set_set_set_set,
2019-01-10 09: 56: 02,713 17074 ИНФОРМАЦИЯ Developingment werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:02] "GET /web/image/ir.ui.menu/5/web_icon_data HTTP / 1,0 "304 -
2019-01-10 09: 56: 02,715 17076 INFO Developmentpement werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:02] "POST /web/dataset/call_kw/res.users/read HTTP / 1.0" 200 -
2019-01-10 09: 56: 02,747 17077 ИНФОРМАЦИЯ Developingment werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:02] "GET /web/image/ir.ui.menu/4/web_icon_data HTTP / 1,0 "200 -
2019-01-10 09: 56: 02,762 17073 INFO Developpement werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:02] "POST / web / dataset / call HTTP / 1.0" 200 -
2019-01-10 09: 56: 02,767 17077 INFO Developpement werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:02] "GET / dashboard HTTP / 1.0" 200 -
2019-01-10 09: 56: 03,059 17077 INFO Developpement werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:03] "POST / web / webclient / translations HTTP / 1.0" 200 -
2019-01-10 09: 56: 03,115 17077 INFO Developerment werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:03] "GET / web / webclient / locale / fr_FR HTTP / 1.0" 200 -
2019-01-10 09: 56: 03,218 17077 INFO Developpement werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:03] "POST / mail / client_action HTTP / 1.0" 200 -
2019-01-10 09: 56: 03,253 17076 INFO Developerment werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:03] "POST /web/dataset/call_kw/res.users/read HTTP / 1.0" 200 -
2019-01-10 09: 56: 03,265 17078 INFO Developpement odoo.modules.registry: делает недействительными все кэши моделей после сигнализации базы данных.
2019-01-10 09: 56: 03,279 17076 INFO Developpement werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:03] "POST / календарь / notify HTTP / 1.0" 200 -
2019-01-10 09: 56: 03,302 17073 ИНФОРМАЦИЯ Developingment werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:03] "GET /web/image?model=res.users&field=image_small&id=1 HTTP / 1,0 "304 -
2019-01-10 09: 56: 03,316 17077 INFO Developpement werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:03] "POST / web / action / load HTTP / 1.0" 200 -
2019-01-10 09: 56: 03,391 17075 ИНФОРМАЦИЯ Developingment werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:03] "POST /web/dataset/call_kw/web.planner/search_read HTTP / 1.0" 200 -
2019-01-10 09: 56: 03,409 17074 ИНФОРМАЦИЯ Developingment werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:03] "POST /web/dataset/call_kw/res.users/activity_user_count HTTP / 1.0" 200 -
2019-01-10 09: 56: 03,439 17076 INFO Developpement werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:03] "POST /web/dataset/call_kw/mail.message/load_views HTTP / 1.0" 200 -
2019-01-10 09: 56: 03,519 17074 ИНФОРМАЦИЯ Developingment werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:03] "POST /web/dataset/call_kw/ir.filters/get_filters HTTP / 1.0" 200 -
2019-01-10 09: 56: 03,575 17074 ИНФОРМАЦИЯ Developingment werkzeug: 127.0.0.1 - - [10 / Jan / 2019 09:56:03] "POST /web/dataset/call_kw/mail.message/message_fetch HTTP / 1.0" 200 -

* Журналы, созданные в сервисе nginx, о которых мы не знаем, связано ли это с ошибкой

2019/01/10 11:52:37 [ошибка] 165 # 165: * 10008 восходящее преждевременно закрытое соединение при чтении заголовка ответа из восходящего потока, клиент: 82.127.91.106, сервер: [server_url], запрос: "POST / longpolling / poll HTTP / 1.1 ", восходящий поток:" http://127.0.0.1:8072/longpolling/poll", хост: "[server_url]", реферер: "https://[server_url]/web?debug"

ПРИМЕЧАНИЯ:

  • Эта строка содержит только один из моих четырех пользовательских модулей, и я не знаю, нормально ли это.

    [10 / Jan / 2019 09:56:02] "GET / web / webclient / qweb? Mods = web, base, bus, web_tour, почта, sales_team, календарь, web_planner, контакты, crm, note, custom_module1, auth_signup, web_responsive, backend_theme_v11, base_import, base_location, base_location_geonames_import, iap, send_sms, sms, web_diagram, web_editor, web_kanban_gauge, web_settings_dashboard, портал HTTP / 1.0 11 304 -
    304 -

  • Также обратите внимание на ошибки 304. Я не могу найти объяснения этому на Odoo, установленном в среде Debian.

Связанные дополнительные ошибки

Вдобавок к этому проблема может возникнуть на том же сервере

  • Фотографии меню не загружаются ( происходит чаще, чем пустая страница )
  • Перенаправление на странице входа не происходит автоматически: «Вы должны быть перенаправлены через несколько секунд, если не нажмете здесь ... / web / login». Раньше был систематическим, но теперь, кажется, больше не происходит.

Решения, не применимые для этого случая

Это может помочь вам, если вы нашли этот вопрос после исследования, но не относится к спецификации этого вопроса

При установке Windows существует модуль, решающий эту проблему: web_fix_blank_page .
Это существует только для V10 на момент написания этого вопроса и устраняет только проблему, связанную с ОС, для Odoo, приводящую к ошибке пустой страницы.

Последнее слово

Так как 4 опробованных решения не работали, и я попробовал две версии изящного odoo, 3 месяца, я ожидаю, что проблема возникнет в моих пользовательских модулях. Но это тысячи и тысячи LOC.
Что может вызвать это, и как я могу найти причину во всех этих файлах.
Может ли это быть что-то еще? Что бы это могло быть?
Я не могу удалить свой модуль один за другим, чтобы попытаться найти, в каком модуле ошибка, по крайней мере, не для всех. По двум причинам:

  • Некоторые модули зависят от других, поэтому я не могу просто попробовать дочерний модуль без родителя.
  • Ошибка не воспроизводима по желанию, она может произойти в какой-то момент, и я не могу быть уверен, есть ли ошибка или нет в модуле, который я удалил с уверенностью.

РЕДАКТИРОВАТЬ: Новая информация

Кажется, что ошибка возникает только тогда, когда сделан запрос к пользовательским контроллерам (и / web / session / authenticate).

  • Если после запроса я пытаюсь обновить страницу в навигаторе, возникает описанная ошибка. И ошибка исправлена ​​очисткой кеша. Как только кэш очищен, обновление все равно приводит к ошибке. После перезапуска сервера и очистки кеша проблем не возникает.
  • Если я сделаю запрос, перезагрузите сервер, затем обновите, без ошибок, без очистки кэша.

1 Ответ

0 голосов
/ 11 августа 2019

Я нашел, что это вызвало. 5 месяцев и до сих пор нет ответа, поэтому я опубликую свой ответ здесь.

Этот ответ, вероятно, поможет вам, если у вас есть собственные маршруты в ваших контроллерах.

Прежде всего, решение

Вы никогда не должны переопределять какой-либо атрибут объекта Response напрямую. Это означает, что такая строка, как Response.status = '400 Invalid credentials', будет вызывать эту ошибку каждый раз, когда вызывается маршрут, по которому она у вас есть.

Подробнее об этой ошибке:

Когда вы делаете Response.status = '400 Bad request', вы восстанавливаете контроль над объектом Response и прерываете обычный рабочий процесс odoo. Следовательно, он больше не может использовать его правильно, и каждый ответ, возвращаемый любым маршрутом odoo, будет иметь последний статус, определенный до тех пор, пока вы не перезапустите сервер (в этом примере 400, поэтому каждый запрос рассматривается как BadRequest, в результате чего появляется пустая страница). и отклоняет другие ошибки, но 200 будет делать то же самое, поскольку 302 необходимо для перенаправлений).

Если кто-нибудь знает, почему Odoo не восстанавливает контроль над объектом Response, не стесняйтесь редактировать этот ответ (и, пожалуйста, сделайте, это меня долго жало).

Так как изменить статус ответа? :

Быстрый взгляд на основные модули дает нам ответ

Случай пользовательского метода HTTP (например, POST):

raise werkzeug.exception.BadRequest("400 Invalid credentials")

Обратите внимание, что вы не можете вызвать любую другую ошибку, кроме 400 по умолчанию. Если вы хотите сделать это, вы должны изменить файл http.py в корневом каталоге odoo. Но имейте в виду, что это, вероятно, означает, что вы не поняли протокол HTTP , как я. Фактически, большую часть времени вы должны возвращать 200, ошибки HTTP не возникает, поэтому запрос выполняется успешно. Однако вы должны добавить атрибут error к возвращенному json, если поведение не соответствует ожиданиям клиента (например, неверный пароль при подключении).

Случай стандартного метода AFAIK (Как GET):

response = werkzeug.wrappers.Response(json.dumps({<i>[your json dictionary]</i>}), status="400 Invalid credentials")
return response
...