Вы здесь

Рандомно кривой cache_field. С чем может быть связанно?

0

Добрый день!
Достала меня такая проблема, люди работают на сайте, выкладывают материалы, и периодически вылазит пустая нода. Расследование меня привело к тому, что криво формируется cache_field, вот пример нормального бина:

a:15:{s:22:"taxonomy_vocabulary_17";a:1:{s:3:"und";a:1:{i:0;a:1:{s:3:"tid";s:4:"1062";}}}s:21:"taxonomy_vocabulary_3";a:1:{s:3:"und";a:1:{i:0;a:1:{s:3:"tid";s:2:"24";}}}s:4:"body";a:1:{s:3:"und";a:1:{i:0;a:5:{s:5:"value";s:3789:"<p style="text-align: justify;">Руководитель Северо-Западного межрегионального координационного совета «Единой России», депутат Госдумы РФ Сергей Петров на <a href="http://karel.er.ru/news/2014/1/21/v-petrozavodske-prenebrezhenie-interesami-izbiratelej-privelo-k-piketu/"><span style="text-decoration: underline;">сайте "ЕР"</span></a> прокомментировал пикет «маршрутчиков», который прошел сегодня, 21 января, в Петрозаводске. В частности, он выказал озабоченность тем, что мэр Петрозаводска Галина Ширшина не вышла к пикетчикам.</p><p style="text-align: justify;">&nbsp;</p><blockquote><p style="text-align: justify;">«Мне звонили избиратели, они в шоке, - сказал он. - Избранный мэр отказывается от встречи не с водителями и не с работниками транспортных компаний, а с избирателями, потому что те люди, которые ее приглашали на встречу, в первую очередь это ее избиратели, голосовавшие за нее. Надо было выйти и объяснить свою позицию».</p></blockquote><p style="text-align: justify;">&nbsp;</p><p style="text-align: justify;">Сергей Петров убежден, что власть должна быть открытой:</p><p style="text-align: justify;">&nbsp;</p><blockquote><p style="text-align: justify;">«Жители Петрозаводска выбрали власть, и она должна быть подотчетна своим избирателям, она не должна бегать от них, прятаться и обманывать. Можно принимать популистские и не популистские решения, но выходить на разговор необходимо. А получается, что власть, которую выбрал народ, избегает народа»,</p></blockquote><p style="text-align: justify;">&nbsp;</p><p style="text-align: justify;">- сказал депутат Госдумы.&nbsp;</p><p style="text-align: justify;">Напомним, сегодня днем петрозаводские перевозчики <a href="http://gazeta-petrozavodsk.ru/content/marshrutchiki-ustroili-piket-u-zdaniya-merii"><span style="text-decoration: underline;">устроили пикет</span></a> у здания мэрии. Они требуют у городских чиновников отозвать уведомления о расторжении контрактов и обсудить сложившуюся ситуацию в рабочей обстановке. Сотрудники транспортных компаний опасаются, что, если контракты будут расторгнуты, все они просто останутся без работы.</p><p style="text-align: justify;">К слову, уже завтра, 22 января, мэр города Галина Ширшина обещала встретиться с представителями транспортных компаний. Возможно, городская власть и перевозчики смогут прийти к какому-то компромиссу.</p><p style="text-align: justify;"><img class="imagecache-photos_in_node" src="/sites/default/files/imagecache/photos_in_node/mar_1.jpg" alt="" /></p>";s:7:"summary";N;s:6:"format";s:9:"full_html";s:10:"safe_value";s:3783:"<p style="text-align: justify;">Руководитель Северо-Западного межрегионального координационного совета «Единой России», депутат Госдумы РФ Сергей Петров на <a href="http://karel.er.ru/news/2014/1/21/v-petrozavodske-prenebrezhenie-interesami-izbiratelej-privelo-k-piketu/"><span style="text-decoration: underline;">сайте "ЕР"</span></a> прокомментировал пикет «маршрутчиков», который прошел сегодня, 21 января, в Петрозаводске. В частности, он выказал озабоченность тем, что мэр Петрозаводска Галина Ширшина не вышла к пикетчикам.</p>
<p style="text-align: justify;"> </p>
<blockquote><p style="text-align: justify;">«Мне звонили избиратели, они в шоке, - сказал он. - Избранный мэр отказывается от встречи не с водителями и не с работниками транспортных компаний, а с избирателями, потому что те люди, которые ее приглашали на встречу, в первую очередь это ее избиратели, голосовавшие за нее. Надо было выйти и объяснить свою позицию».</p>
</blockquote>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">Сергей Петров убежден, что власть должна быть открытой:</p>
<p style="text-align: justify;"> </p>
<blockquote><p style="text-align: justify;">«Жители Петрозаводска выбрали власть, и она должна быть подотчетна своим избирателям, она не должна бегать от них, прятаться и обманывать. Можно принимать популистские и не популистские решения, но выходить на разговор необходимо. А получается, что власть, которую выбрал народ, избегает народа»,</p>
</blockquote>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">- сказал депутат Госдумы. </p>
<p style="text-align: justify;">Напомним, сегодня днем петрозаводские перевозчики <a href="http://gazeta-petrozavodsk.ru/content/marshrutchiki-ustroili-piket-u-zdaniya-merii"><span style="text-decoration: underline;">устроили пикет</span></a> у здания мэрии. Они требуют у городских чиновников отозвать уведомления о расторжении контрактов и обсудить сложившуюся ситуацию в рабочей обстановке. Сотрудники транспортных компаний опасаются, что, если контракты будут расторгнуты, все они просто останутся без работы.</p>
<p style="text-align: justify;">К слову, уже завтра, 22 января, мэр города Галина Ширшина обещала встретиться с представителями транспортных компаний. Возможно, городская власть и перевозчики смогут прийти к какому-то компромиссу.</p>
<p style="text-align: justify;"><img class="imagecache-photos_in_node" src="/sites/default/files/imagecache/photos_in_node/mar_1.jpg" alt="" /></p>
";s:12:"safe_summary";s:0:"";}}}s:16:"field_annotation";a:1:{s:3:"und";a:1:{i:0;a:3:{s:5:"value";s:163:"<p>Высшие чины «Единой России» прокомментировали пикет «маршрутчиков» в Петрозаводске</p>";s:6:"format";s:9:"full_html";s:10:"safe_value";s:164:"<p>Высшие чины «Единой России» прокомментировали пикет «маршрутчиков» в Петрозаводске</p>
";}}}s:11:"field_image";a:1:{s:3:"und";a:1:{i:0;a:14:{s:3:"fid";s:5:"26868";s:3:"uid";s:3:"131";s:8:"filename";s:10:"Petrov.jpg";s:3:"uri";s:21:"public://Petrov_0.jpg";s:8:"filemime";s:10:"image/jpeg";s:8:"filesize";s:6:"168815";s:6:"status";s:1:"1";s:9:"timestamp";s:10:"1425842293";s:4:"type";s:5:"image";s:16:"image_dimensions";a:2:{s:5:"width";s:3:"600";s:6:"height";s:3:"450";}s:3:"alt";s:0:"";s:5:"title";s:0:"";s:5:"width";s:3:"600";s:6:"height";s:3:"450";}}}s:14:"field_fototext";a:1:{s:3:"und";a:1:{i:0;a:14:{s:3:"fid";s:5:"26869";s:3:"uid";s:3:"131";s:8:"filename";s:7:"mar.jpg";s:3:"uri";s:18:"public://mar_1.jpg";s:8:"filemime";s:10:"image/jpeg";s:8:"filesize";s:5:"26270";s:6:"status";s:1:"1";s:9:"timestamp";s:10:"1425842293";s:4:"type";s:5:"image";s:16:"image_dimensions";a:2:{s:5:"width";s:3:"520";s:6:"height";s:3:"366";}s:3:"alt";s:0:"";s:5:"title";s:0:"";s:5:"width";s:3:"520";s:6:"height";s:3:"366";}}}s:10:"field_tags";a:0:{}s:15:"field_rubriks_2";a:1:{s:3:"und";a:1:{i:0;a:1:{s:3:"tid";s:5:"16097";}}}s:11:"field_story";a:0:{}s:19:"field_include_video";a:0:{}s:19:"field_in_top_scroll";a:0:{}s:10:"field_mark";a:0:{}s:22:"field_in_top_important";a:0:{}s:24:"field_in_top_interesting";a:0:{}s:14:"field_gal_lite";a:0:{}}

А вот пример кривого бина:

a:15:{s:22:"taxonomy_vocabulary_17";a:0:{}s:21:"taxonomy_vocabulary_3";a:0:{}s:4:"body";a:0:{}s:16:"field_annotation";a:0:{}s:11:"field_image";a:0:{}s:14:"field_fototext";a:0:{}s:10:"field_tags";a:0:{}s:15:"field_rubriks_2";a:0:{}s:11:"field_story";a:0:{}s:19:"field_include_video";a:0:{}s:19:"field_in_top_scroll";a:0:{}s:10:"field_mark";a:0:{}s:22:"field_in_top_important";a:0:{}s:24:"field_in_top_interesting";a:0:{}s:14:"field_gal_lite";a:0:{}}

Что делать, не пойму. Выяснил, что бин формируется в field.attach.inc, после сохранения ноды.
Как поймать ошибку, ума не приложу. В логах php нет ошибок. Вылазять стандартные - нет картинки, нет страницы, но не думаю, что из-за этого может быть такая ерунда.

Когда жму сбросить кэш, станица появляется, бин с кэшем полей делается нормальным. Может кто на практике встречал такое?

Версия Drupal: 
7.x
Категория: 
Field API
Вопрос задан 12.04.2016 - 10:28
Аватар пользователя Sora
Sora
92

Небольшой UP:
Сайт существует более 7 лет, и апгрейдился с 6, я только сейчас заметил, что половина таблиц в базе MyISAM, насколько это может влиять? cache_field, правда, InnoDB.
Я правильно понимаю, что отсутствие транзакций в MyISAM может играть такую шутку?
В БД я полный ноль.

Комментарий оставлен 12.04.2016 - 12:07

Ответы

1

берите innodb, в отличии от myisam там блокировки на уровне записей, myisam блокирует всю таблицу и если у вас дохлый mysql то могут быть дедлоки, собственно это сразу видно по dblog дедлоки там будут как ошибки

Ответ дан 12.04.2016 - 21:03
0

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

Насчет баз. Да. Таблицы могут ломатся. И некоторые движки более подвержены этому чем другие.
Например на моем сайте ломали таблицы нод,роботы ,которые забивали тысячами комментов в день ноды.

Вполне вероятно, что увеличение некоторых конфигов в сервере может убрать вашу проблему

Ответ дан 12.04.2016 - 18:13

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

Попробую пока перевести таблицы на innodb.

Комментарий оставлен 12.04.2016 - 18:55

Для того и существуют тесты. Ставьте хоть 10 миллионов итераций ,запускайте и получите на определенной ошибку

Комментарий оставлен 12.04.2016 - 20:31

К слову сказать, innodb тоже можно сломать. Мой сайт полностью на innodb

Комментарий оставлен 12.04.2016 - 20:53