mikopbx / Core

Main repository! MikoPBX - is free, easy to setup PBX for small business based on Asterisk 16 core
https://www.mikopbx.com
GNU General Public License v3.0
334 stars 58 forks source link

Fatal error: Uncaught Phalcon\Mvc\Model\Exception: Failed to store metaData to the cache adapter in /offload/rootfs/usr/www/src/Common/Models/PbxExtensionModules.php:136 #651

Closed ivstep closed 2 months ago

ivstep commented 6 months ago

MikoPBX 2023.1.223

Периодически перестает работать АТС: веб интерфейс не доступен, звонки не работают. При входе в веб интерфейс сообщение:

Fatal error: Uncaught Phalcon\Mvc\Model\Exception: Failed to store metaData to the cache adapter in /offload/rootfs/usr/www/src/Common/Models/PbxExtensionModules.php:136 Stack trace: #0 [internal function]: Phalcon\Mvc\Model\MetaData->throwWriteException(true) #1 [internal function]: Phalcon\Mvc\Model\MetaData->write('map-mikopbx\com...', Array) #2 [internal function]: Phalcon\Mvc\Model\MetaData->initialize(Object(MikoPBX\Common\Models\PbxExtensionModules), NULL, NULL, NULL) #3 [internal function]: Phalcon\Mvc\Model\MetaData->readColumnMapIndex(Object(MikoPBX\Common\Models\PbxExtensionModules), 1) #4 [internal function]: Phalcon\Mvc\Model\MetaData->getReverseColumnMap(Object(MikoPBX\Common\Models\PbxExtensionModules)) #5 [internal function]: Phalcon\Mvc\Model\MetaData->hasAttribute(Object(MikoPBX\Common\Models\PbxExtensionModules), 'disabled') #6 [internal function]: Phalcon\Mvc\Model\Query->_getQualified(Array) #7 [internal function]: Phalcon\Mvc\Model\Query->_getExpression(Array, true) #8 [internal function]: Phalcon\M in /offload/rootfs/usr/www/src/Common/Models/PbxExtensionModules.php on line 136

Помогает перезагрузка АТС. Память свободная есть, redis запущен.

boffart commented 6 months ago

Нужно пробовать воспроизвести на актуальной версии АТС. Слишком много было переписано. Оперативки как я понял хватает, но вопрос что с местом на диске, точно есть запас?

Я перенесу это в дискуссии, если воспроизведется в актуальной сборке, то тогда будем думать.

boffart commented 5 months ago

пробую команду:

redis-cli 
127.0.0.1:6379> FLUSHALL

появляется ошибка:

232
boffart commented 5 months ago

данные снэпшота сохраняются по пути /var/tmp фактически, это оперативная память

тут варианты:

  1. файл /var/tmp/dump.rdb поврежден или запись в файл не возможна
  2. не хватает оперативной памяти

когда снова воспроизведется можно попробовать:

redis-cli 
127.0.0.1:6379> config set stop-writes-on-bgsave-error no

поможет ли...

либо вообще отключить снэпшотинг:

127.0.0.1:6379>config set save ""

https://redis.io/docs/management/config-file/

Sherman120kg commented 3 months ago

MikoPBX 2023.2.206 Ловим подобную ошибку, симптомы те же. Fatal error: Uncaught Phalcon\Mvc\Model\Exception: Failed to store metaData to the cache adapter in /offload/rootfs/usr/www/src/Common/Models/PbxExtensionModules.php:120 Stack trace: #0 [internal function]: Phalcon\Mvc\Model\MetaData->throwWriteException(true) #1 [internal function]: Phalcon\Mvc\Model\MetaData->write('map-mikopbx\\com...', Array) #2 [internal function]: Phalcon\Mvc\Model\MetaData->initialize(Object(MikoPBX\Common\Models\PbxExtensionModules), NULL, NULL, NULL) #3 [internal function]: Phalcon\Mvc\Model\MetaData->readColumnMapIndex(Object(MikoPBX\Common\Models\PbxExtensionModules), 1) #4 [internal function]: Phalcon\Mvc\Model\MetaData->getReverseColumnMap(Object(MikoPBX\Common\Models\PbxExtensionModules)) #5 [internal function]: Phalcon\Mvc\Model\MetaData->hasAttribute(Object(MikoPBX\Common\Models\PbxExtensionModules), 'uniqid') #6 [internal function]: Phalcon\Mvc\Model\Query->_getQualified(Array) #7 [internal function]: Phalcon\Mvc\Model\Query->_getExpression(Array) #8 [internal function]: Phalcon\Mvc\Model in /offload/rootfs/usr/www/src/Common/Models/PbxExtensionModules.php on line 120

Место на диске есть, памяти хватает. Логи могу предоставить по запросу в лс.

boffart commented 3 months ago

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

boffart commented 2 months ago

Похоже проблема связана с использованием доп. модулей. Решается добавлением в cron через кастомизацию системных файлов команды */1 * * * * /bin/busybox find /storage/usbdisk*/mikopbx/tmp/*/ -mmin +5 -type f -delete> /dev/null 2>&1 чистит временные файлы.