Сулу, странная ошибка, связанная с хешем, при попытке сохранить страницу/пост?

До недавнего времени все работало хорошо. Теперь, когда я пытаюсь сохранить (создать или обновить) любую страницу или сообщение, я получаю сообщение об ошибке в верхней части формы. Ошибка — при попытке сохранить форму произошла ошибка.

В журнале ошибок я вижу эту ошибку:

«Неперехваченное PHP-исключение Sulu\Component\Rest\Exception\InvalidHashException: «Данный хэш для объекта типа «Sulu\Bundle\ArticleBundle\Document\ArticleDocument» с идентификатором «9e0720a7-5565-4a6f-a735-8a186b8fef9b». ” не соответствует текущему хешу. Сущность, вероятно, была отредактирована за это время». в /var/www/html/vendor/sulu/sulu/src/Sulu/Component/Hash/RequestHashChecker.php строка 53

Пробовал очищать кеш symfony, кеш веб-сайта от администратора, перезапускать контейнеры докеров.

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

Обновление: странная вещь, которую я только что заметил. Когда я пытаюсь сохранить какую-либо статью, получаю эту ошибку и возвращаюсь на страницу обзора (где перечислены все статьи этого типа), я вижу неизмененный заголовок статьи. Но когда я нажимаю, чтобы отредактировать его, я вижу измененный заголовок?!? Например, заголовок на странице обзора и заголовок на странице редактирования не используются в одном и том же месте? Как это возможно?

Обновление:

Теперь, даже когда я снова настраиваю проект с нуля, сохранение статей вызывает эту ошибку. Еще немного информации:

В трассировке стека последняя выполненная команда:

in vendor/elasticsearch/elasticsearch/src/Elasticsearch/ConnectionPool/StaticNoPingConnectionPool.php (line 64)

и выдает сообщение «В вашем кластере не найдено активных узлов».

И пока я настраиваю проект при выполнении:

php bin/console ongr:es:index:create

Я получаю сообщение об ошибке:

{"error":{"root_cause":[{"type":"resource_already_exists_exception","reason  
  ":"index [su_articles/sWs5F1uzSFO8bFiZqF1Egw] already exists","index_uuid":  
  "sWs5F1uzSFO8bFiZqF1Egw","index":"su_articles"}],"type":"resource_already_e  
  xists_exception","reason":"index [su_articles/sWs5F1uzSFO8bFiZqF1Egw] alrea  
  dy exists","index_uuid":"sWs5F1uzSFO8bFiZqF1Egw","index":"su_articles"},"st  
  atus":400} 

И когда я бегу:

php bin/console ongr:es:index:create --manager=live

у меня похоже:

In Connection.php line 675:
  {"error":{"root_cause":[{"type":"resource_already_exists_exception","reason":"index [su_articles_live/Pissm9ycRj-o79K4wrrD  
  AA] already exists","index_uuid":"Pissm9ycRj-o79K4wrrDAA","index":"su_articles_live"}],"type":"resource_already_exists_exc  
  eption","reason":"index [su_articles_live/Pissm9ycRj-o79K4wrrDAA] already exists","index_uuid":"Pissm9ycRj-o79K4wrrDAA","i  
  ndex":"su_articles_live"},"status":400} 

Также стоит упомянуть, что теперь сохранение страниц работает, а сохранение статей — нет.


person MilanG    schedule 17.05.2021    source источник


Ответы (2)


Это решило проблему создания индекса ElasticSearch для меня:

php bin/console ongr:es:index:drop --force
person Aleksandar Jakovljevic    schedule 20.05.2021

Ошибка может возникнуть в следующих случаях.

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

Поэтому, если это один из неожиданных случаев, сначала вы должны очистить свои cache.pools с помощью:

bin/console cache:pool:prune

Если у вас настроено несколько серверов, убедитесь, что вы настроили центральный кеш. Чаще всего в этом случае используется redis-server, который вы настраиваете в своем cache.yaml, например:

# config/packages/prod/cache.yaml
framework:
    cache:
        default_redis_provider: "%env(resolve:REDIS_DSN)%"
        app: cache.adapter.redis

Также убедитесь, что вы используете последнюю версию и, возможно, обновите конфигурацию кэша phpcr на основе sulu/skeleton: https://github.com/sulu/skeleton/blob/2.x/config/packages/prod/sulu_document_manager.yaml, там можно было при производительности не имеет значения, в вашем случае отключите кеш phpcr, я бы не рекомендовал этого.

person Alexander Schranz    schedule 17.05.2021
comment
Пытался очистить кэш пулов, но получаю сообщение об ошибке «Недостаточно аргументов (отсутствуют: пулы)». - person MilanG; 17.05.2021
comment
Вы можете дать ему cache.app или использовать команду cache:pool:prune для очистки всех кешей. - person Alexander Schranz; 17.05.2021
comment
Пробовал cache:pool:prune, но не решил проблему. - person MilanG; 17.05.2021
comment
Также это происходит, когда я пытаюсь создать новую статью/страницу, так что это не первый случай. - person MilanG; 17.05.2021
comment
А у меня глобальный config/pachages/cache.yaml и в нем только framework:cache: и ничего больше. - person MilanG; 17.05.2021
comment
Эта же ошибка возникает в вашей среде разработки, где кеширование отключено? - person Alexander Schranz; 18.05.2021
comment
Да. Шестеро из нас работают с одной и той же настройкой (Docker), и это случается только со мной. Но я снова настроил проект с нуля, и теперь он работает. Не удалось исследовать больше времени в этом вопросе исследования. - person MilanG; 19.05.2021
comment
И это случилось снова. Теперь я могу сохранять страницы, но не могу статьи. В Symfony Profiler регистрируется только токен f5b9fe, который не найден. :( - person MilanG; 19.05.2021