[GH-ISSUE #1297] FTS database locking when syncing multiple files simultaneously #745

Closed
opened 2026-02-26 02:34:09 +03:00 by kerem · 4 comments
Owner

Originally created by @vitoyucepi on GitHub (Mar 30, 2021).
Original GitHub issue: https://github.com/koel/koel/issues/1297

Describe the bug
If I try adding multiple files at the same time, then some of them can fail.

To reproduce
Steps to reproduce the behavior:

  1. Upload multiple files to music directory
  2. Use single file sync in parallel
    find /path/to/music/dir -type f | xargs -I {} sh -c 'php artisan koel:sync CLOSE_WRITE,CLOSE {}'
  3. See error
watcher_1  | [2021-03-30 06:16:44] production.ERROR: SQLSTATE[HY000]: General error: 5 database is locked {"exception":"[object] (PDOException(code: HY000): SQLSTATE[HY000]: General error: 5 database is locked at /var/www/html/vendor/teamtnt/tntsearch/src/Indexer/TNTIndexer.php:420)
watcher_1  | [stacktrace]
watcher_1  | #0 /var/www/html/vendor/teamtnt/tntsearch/src/Indexer/TNTIndexer.php(420): PDOStatement->execute()
watcher_1  | #1 /var/www/html/vendor/teamtnt/tntsearch/src/Indexer/TNTIndexer.php(405): TeamTNT\\TNTSearch\\Indexer\\TNTIndexer->delete()
watcher_1  | #2 /var/www/html/vendor/teamtnt/laravel-scout-tntsearch-driver/src/Engines/TNTSearchEngine.php(66): TeamTNT\\TNTSearch\\Indexer\\TNTIndexer->update()
watcher_1  | #3 /var/www/html/vendor/laravel/framework/src/Illuminate/Collections/Traits/EnumeratesValues.php(234): TeamTNT\\Scout\\Engines\\TNTSearchEngine->TeamTNT\\Scout\\Engines\\{closure}()
watcher_1  | #4 /var/www/html/vendor/teamtnt/laravel-scout-tntsearch-driver/src/Engines/TNTSearchEngine.php(70): Illuminate\\Support\\Collection->each()
watcher_1  | #5 /var/www/html/vendor/laravel/scout/src/Searchable.php(63): TeamTNT\\Scout\\Engines\\TNTSearchEngine->update()
watcher_1  | #6 /var/www/html/vendor/laravel/scout/src/Searchable.php(42): App\\Models\\Artist->queueMakeSearchable()
watcher_1  | #7 /var/www/html/vendor/laravel/framework/src/Illuminate/Macroable/Traits/Macroable.php(114): Illuminate\\Database\\Eloquent\\Collection->Laravel\\Scout\\{closure}()
watcher_1  | #8 /var/www/html/vendor/laravel/scout/src/Searchable.php(154): Illuminate\\Support\\Collection->__call()
watcher_1  | #9 /var/www/html/vendor/laravel/scout/src/ModelObserver.php(87): App\\Models\\Song->searchable()
watcher_1  | #10 /var/www/html/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(412): Laravel\\Scout\\ModelObserver->saved()
watcher_1  | #11 /var/www/html/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(237): Illuminate\\Events\\Dispatcher->Illuminate\\Events\\{closure}()
watcher_1  | #12 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasEvents.php(189): Illuminate\\Events\\Dispatcher->dispatch()
watcher_1  | #13 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(898): Illuminate\\Database\\Eloquent\\Model->fireModelEvent()
watcher_1  | #14 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(869): Illuminate\\Database\\Eloquent\\Model->finishSave()
watcher_1  | #15 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(468): Illuminate\\Database\\Eloquent\\Model->save()
watcher_1  | #16 /var/www/html/vendor/laravel/framework/src/Illuminate/Support/helpers.php(263): Illuminate\\Database\\Eloquent\\Builder->Illuminate\\Database\\Eloquent\\{closure}()
watcher_1  | #17 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(469): tap()
watcher_1  | #18 /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php(23): Illuminate\\Database\\Eloquent\\Builder->updateOrCreate()
watcher_1  | #19 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1885): Illuminate\\Database\\Eloquent\\Model->forwardCallTo()
watcher_1  | #20 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1897): Illuminate\\Database\\Eloquent\\Model->__call()
watcher_1  | #21 /var/www/html/app/Services/FileSynchronizer.php(209): Illuminate\\Database\\Eloquent\\Model::__callStatic()
watcher_1  | #22 /var/www/html/app/Services/MediaSyncService.php(250): App\\Services\\FileSynchronizer->sync()
watcher_1  | #23 /var/www/html/app/Services/MediaSyncService.php(179): App\\Services\\MediaSyncService->handleNewOrModifiedFileRecord()
watcher_1  | #24 /var/www/html/app/Services/MediaSyncService.php(168): App\\Services\\MediaSyncService->syncFileRecord()
watcher_1  | #25 /var/www/html/app/Console/Commands/SyncCommand.php(96): App\\Services\\MediaSyncService->syncByWatchRecord()
watcher_1  | #26 /var/www/html/app/Console/Commands/SyncCommand.php(53): App\\Console\\Commands\\SyncCommand->syngle()
watcher_1  | #27 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): App\\Console\\Commands\\SyncCommand->handle()
watcher_1  | #28 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Util.php(40): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
watcher_1  | #29 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure()
watcher_1  | #30 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\\Container\\BoundMethod::callBoundMethod()
watcher_1  | #31 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(610): Illuminate\\Container\\BoundMethod::call()
watcher_1  | #32 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(136): Illuminate\\Container\\Container->call()
watcher_1  | #33 /var/www/html/vendor/symfony/console/Command/Command.php(256): Illuminate\\Console\\Command->execute()
watcher_1  | #34 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(121): Symfony\\Component\\Console\\Command\\Command->run()
watcher_1  | #35 /var/www/html/vendor/symfony/console/Application.php(971): Illuminate\\Console\\Command->run()
watcher_1  | #36 /var/www/html/vendor/symfony/console/Application.php(290): Symfony\\Component\\Console\\Application->doRunCommand()
watcher_1  | #37 /var/www/html/vendor/symfony/console/Application.php(166): Symfony\\Component\\Console\\Application->doRun()
watcher_1  | #38 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Application.php(93): Symfony\\Component\\Console\\Application->run()
watcher_1  | #39 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(129): Illuminate\\Console\\Application->run()
watcher_1  | #40 /var/www/html/artisan(35): Illuminate\\Foundation\\Console\\Kernel->handle()
watcher_1  | #41 {main}
watcher_1  | "} 
watcher_1  | 
watcher_1  | In TNTIndexer.php line 420:
watcher_1  |                                                         
watcher_1  |   SQLSTATE[HY000]: General error: 5 database is locked  

Expected behavior
No sqlite errors. Maybe increase wait for lock time.

Screenshots

Environment

  • Koel version: 5.1.0
  • OS: docker(php:7.4.16-apache) on archlinux
  • Browser: Chrome 89
  • PHP version: 7.4.16
  • Node version: N/A

Additional context
Originally I've found this error by trying to speedup inotifywait.

syncFile() {
  sleep "${WATCHER_SLEEP_TIME:-0.5}"
  su www-data -s /bin/sh -c "php artisan koel:sync '${line}'"
}

monitorFiles() {
  newOrModifyEvents='close_write,create,moved_to'
  deleteEvents='delete,moved_from'
  inotifywait -rme "${newOrModifyEvents},${deleteEvents}" --format "%e %w%f" "${MEDIA_PATH}" |
    while read -r line; do
      file=$(echo "${line}" | cut -d ' ' -f2-)
      if [ -e "${file}" ]; then
        if [ -d "${file}" ]; then
          chmod 0777 "${file}"
        else
          chmod 0666 "${file}"
        fi
      fi
      # We are not waiting for single file to end sync.
      # Just send to background this function call.
      # So all sync commands will execute in parallel.
      syncFile &
    done
}

I think this might happen if I want to add files in parallel.

  1. Sync from inotifywait and from cron at the same time.
  2. Add files from web ui from multiple sources.
Originally created by @vitoyucepi on GitHub (Mar 30, 2021). Original GitHub issue: https://github.com/koel/koel/issues/1297 **Describe the bug** If I try adding multiple files at the same time, then some of them can fail. **To reproduce** Steps to reproduce the behavior: 1. Upload multiple files to music directory 1. Use single file sync in parallel `find /path/to/music/dir -type f | xargs -I {} sh -c 'php artisan koel:sync CLOSE_WRITE,CLOSE {}'` 1. See error ``` watcher_1 | [2021-03-30 06:16:44] production.ERROR: SQLSTATE[HY000]: General error: 5 database is locked {"exception":"[object] (PDOException(code: HY000): SQLSTATE[HY000]: General error: 5 database is locked at /var/www/html/vendor/teamtnt/tntsearch/src/Indexer/TNTIndexer.php:420) watcher_1 | [stacktrace] watcher_1 | #0 /var/www/html/vendor/teamtnt/tntsearch/src/Indexer/TNTIndexer.php(420): PDOStatement->execute() watcher_1 | #1 /var/www/html/vendor/teamtnt/tntsearch/src/Indexer/TNTIndexer.php(405): TeamTNT\\TNTSearch\\Indexer\\TNTIndexer->delete() watcher_1 | #2 /var/www/html/vendor/teamtnt/laravel-scout-tntsearch-driver/src/Engines/TNTSearchEngine.php(66): TeamTNT\\TNTSearch\\Indexer\\TNTIndexer->update() watcher_1 | #3 /var/www/html/vendor/laravel/framework/src/Illuminate/Collections/Traits/EnumeratesValues.php(234): TeamTNT\\Scout\\Engines\\TNTSearchEngine->TeamTNT\\Scout\\Engines\\{closure}() watcher_1 | #4 /var/www/html/vendor/teamtnt/laravel-scout-tntsearch-driver/src/Engines/TNTSearchEngine.php(70): Illuminate\\Support\\Collection->each() watcher_1 | #5 /var/www/html/vendor/laravel/scout/src/Searchable.php(63): TeamTNT\\Scout\\Engines\\TNTSearchEngine->update() watcher_1 | #6 /var/www/html/vendor/laravel/scout/src/Searchable.php(42): App\\Models\\Artist->queueMakeSearchable() watcher_1 | #7 /var/www/html/vendor/laravel/framework/src/Illuminate/Macroable/Traits/Macroable.php(114): Illuminate\\Database\\Eloquent\\Collection->Laravel\\Scout\\{closure}() watcher_1 | #8 /var/www/html/vendor/laravel/scout/src/Searchable.php(154): Illuminate\\Support\\Collection->__call() watcher_1 | #9 /var/www/html/vendor/laravel/scout/src/ModelObserver.php(87): App\\Models\\Song->searchable() watcher_1 | #10 /var/www/html/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(412): Laravel\\Scout\\ModelObserver->saved() watcher_1 | #11 /var/www/html/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(237): Illuminate\\Events\\Dispatcher->Illuminate\\Events\\{closure}() watcher_1 | #12 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasEvents.php(189): Illuminate\\Events\\Dispatcher->dispatch() watcher_1 | #13 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(898): Illuminate\\Database\\Eloquent\\Model->fireModelEvent() watcher_1 | #14 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(869): Illuminate\\Database\\Eloquent\\Model->finishSave() watcher_1 | #15 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(468): Illuminate\\Database\\Eloquent\\Model->save() watcher_1 | #16 /var/www/html/vendor/laravel/framework/src/Illuminate/Support/helpers.php(263): Illuminate\\Database\\Eloquent\\Builder->Illuminate\\Database\\Eloquent\\{closure}() watcher_1 | #17 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(469): tap() watcher_1 | #18 /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php(23): Illuminate\\Database\\Eloquent\\Builder->updateOrCreate() watcher_1 | #19 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1885): Illuminate\\Database\\Eloquent\\Model->forwardCallTo() watcher_1 | #20 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1897): Illuminate\\Database\\Eloquent\\Model->__call() watcher_1 | #21 /var/www/html/app/Services/FileSynchronizer.php(209): Illuminate\\Database\\Eloquent\\Model::__callStatic() watcher_1 | #22 /var/www/html/app/Services/MediaSyncService.php(250): App\\Services\\FileSynchronizer->sync() watcher_1 | #23 /var/www/html/app/Services/MediaSyncService.php(179): App\\Services\\MediaSyncService->handleNewOrModifiedFileRecord() watcher_1 | #24 /var/www/html/app/Services/MediaSyncService.php(168): App\\Services\\MediaSyncService->syncFileRecord() watcher_1 | #25 /var/www/html/app/Console/Commands/SyncCommand.php(96): App\\Services\\MediaSyncService->syncByWatchRecord() watcher_1 | #26 /var/www/html/app/Console/Commands/SyncCommand.php(53): App\\Console\\Commands\\SyncCommand->syngle() watcher_1 | #27 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): App\\Console\\Commands\\SyncCommand->handle() watcher_1 | #28 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Util.php(40): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}() watcher_1 | #29 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure() watcher_1 | #30 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\\Container\\BoundMethod::callBoundMethod() watcher_1 | #31 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(610): Illuminate\\Container\\BoundMethod::call() watcher_1 | #32 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(136): Illuminate\\Container\\Container->call() watcher_1 | #33 /var/www/html/vendor/symfony/console/Command/Command.php(256): Illuminate\\Console\\Command->execute() watcher_1 | #34 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(121): Symfony\\Component\\Console\\Command\\Command->run() watcher_1 | #35 /var/www/html/vendor/symfony/console/Application.php(971): Illuminate\\Console\\Command->run() watcher_1 | #36 /var/www/html/vendor/symfony/console/Application.php(290): Symfony\\Component\\Console\\Application->doRunCommand() watcher_1 | #37 /var/www/html/vendor/symfony/console/Application.php(166): Symfony\\Component\\Console\\Application->doRun() watcher_1 | #38 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Application.php(93): Symfony\\Component\\Console\\Application->run() watcher_1 | #39 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(129): Illuminate\\Console\\Application->run() watcher_1 | #40 /var/www/html/artisan(35): Illuminate\\Foundation\\Console\\Kernel->handle() watcher_1 | #41 {main} watcher_1 | "} watcher_1 | watcher_1 | In TNTIndexer.php line 420: watcher_1 | watcher_1 | SQLSTATE[HY000]: General error: 5 database is locked ``` **Expected behavior** No sqlite errors. Maybe increase wait for lock time. **Screenshots** **Environment** - Koel version: 5.1.0 - OS: docker(php:7.4.16-apache) on archlinux - Browser: Chrome 89 - PHP version: 7.4.16 - Node version: N/A **Additional context** Originally I've found this error by trying to speedup `inotifywait`. ```sh syncFile() { sleep "${WATCHER_SLEEP_TIME:-0.5}" su www-data -s /bin/sh -c "php artisan koel:sync '${line}'" } monitorFiles() { newOrModifyEvents='close_write,create,moved_to' deleteEvents='delete,moved_from' inotifywait -rme "${newOrModifyEvents},${deleteEvents}" --format "%e %w%f" "${MEDIA_PATH}" | while read -r line; do file=$(echo "${line}" | cut -d ' ' -f2-) if [ -e "${file}" ]; then if [ -d "${file}" ]; then chmod 0777 "${file}" else chmod 0666 "${file}" fi fi # We are not waiting for single file to end sync. # Just send to background this function call. # So all sync commands will execute in parallel. syncFile & done } ``` I think this might happen if I want to add files in parallel. 1. Sync from `inotifywait` and from `cron` at the same time. 2. Add files from web ui from multiple sources.
kerem closed this issue 2026-02-26 02:34:09 +03:00
Author
Owner

@vitoyucepi commented on GitHub (Mar 30, 2021):

This can be triggered via webui.
To reproduce
Steps to reproduce the behavior:

  1. Go to webui.
  2. Go to uploads page.
  3. Try to upload many files.
    I've tested 10 files. Maybe it depends on how fast I upload files.
  4. See error in webui and server.
    web_1      | [2021-03-30 08:38:15] production.ERROR: SQLSTATE[HY000]: General error: 5 database is locked {"userId":1,"exception":"[object] (PDOException(code: HY000): SQLSTATE[HY000]: General error: 5 database is locked at /var/www/html/vendor/teamtnt/tntsearch/src/Indexer/TNTIndexer.php:685)
    
<!-- gh-comment-id:810035648 --> @vitoyucepi commented on GitHub (Mar 30, 2021): This can be triggered via webui. To reproduce Steps to reproduce the behavior: 1. Go to webui. 2. Go to uploads page. 3. Try to upload many files. I've tested 10 files. Maybe it depends on how fast I upload files. 4. See error in webui and server. ``` web_1 | [2021-03-30 08:38:15] production.ERROR: SQLSTATE[HY000]: General error: 5 database is locked {"userId":1,"exception":"[object] (PDOException(code: HY000): SQLSTATE[HY000]: General error: 5 database is locked at /var/www/html/vendor/teamtnt/tntsearch/src/Indexer/TNTIndexer.php:685) ```
Author
Owner

@vitoyucepi commented on GitHub (Mar 30, 2021):

Maybe also related issue. Reproduced with default docker-compose.yml from https://github.com/koel/docker

version: "3"

services:
  koel:
    image: hyzual/koel
    depends_on:
      - database
    ports:
      - 8080:80
    environment:
      DB_CONNECTION: mysql
      DB_HOST: database
      DB_USERNAME: koel
      DB_PASSWORD: koel
      DB_DATABASE: koel
      LOG_CHANNEL: stderr
      APP_LOG_LEVEL: debug
    volumes:
      - music:/music
      - covers:/var/www/html/public/img/covers
      - search_index:/var/www/html/storage/search-indexes

  database:
    image: mysql/mysql-server:5.7
    volumes:
      - db:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: koel
      MYSQL_DATABASE: koel
      MYSQL_USER: koel
      MYSQL_PASSWORD: koel

volumes:
  db:
    driver: local
  music:
    driver: local
  covers:
    driver: local
  search_index:
    driver: local
koel_1      | 192.168.160.1 - - [30/Mar/2021:13:04:44 +0000] "POST /api/upload HTTP/1.1" 500 341 "http://localhost:8080/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.105 Safari/537.36"
koel_1      | [2021-03-30 13:04:45] production.ERROR: SQLSTATE[HY000]: General error: 1 no such table: info {"userId":1,"exception":"[object] (PDOException(code: HY000): SQLSTATE[HY000]: General error: 1 no such table: info at /var/www/html/vendor/teamtnt/tntsearch/src/TNTSearch.php:399)
koel_1      | [stacktrace]
koel_1      | #0 /var/www/html/vendor/teamtnt/tntsearch/src/TNTSearch.php(399): PDO->query()
koel_1      | #1 /var/www/html/vendor/teamtnt/tntsearch/src/TNTSearch.php(370): TeamTNT\\TNTSearch\\TNTSearch->getValueFromInfoTable()
koel_1      | #2 /var/www/html/vendor/teamtnt/tntsearch/src/TNTSearch.php(84): TeamTNT\\TNTSearch\\TNTSearch->setStemmer()
koel_1      | #3 /var/www/html/vendor/teamtnt/laravel-scout-tntsearch-driver/src/Engines/TNTSearchEngine.php(53): TeamTNT\\TNTSearch\\TNTSearch->selectIndex()
koel_1      | #4 /var/www/html/vendor/laravel/scout/src/Searchable.php(63): TeamTNT\\Scout\\Engines\\TNTSearchEngine->update()
koel_1      | #5 /var/www/html/vendor/laravel/scout/src/Searchable.php(42): App\\Models\\Artist->queueMakeSearchable()
koel_1      | #6 /var/www/html/vendor/laravel/framework/src/Illuminate/Macroable/Traits/Macroable.php(114): Illuminate\\Database\\Eloquent\\Collection->Laravel\\Scout\\{closure}()
koel_1      | #7 /var/www/html/vendor/laravel/scout/src/Searchable.php(154): Illuminate\\Support\\Collection->__call()
koel_1      | #8 /var/www/html/vendor/laravel/scout/src/ModelObserver.php(87): App\\Models\\Song->searchable()
koel_1      | #9 /var/www/html/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(412): Laravel\\Scout\\ModelObserver->saved()
koel_1      | #10 /var/www/html/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(237): Illuminate\\Events\\Dispatcher->Illuminate\\Events\\{closure}()
koel_1      | #11 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasEvents.php(189): Illuminate\\Events\\Dispatcher->dispatch()
koel_1      | #12 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(898): Illuminate\\Database\\Eloquent\\Model->fireModelEvent()
koel_1      | #13 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(869): Illuminate\\Database\\Eloquent\\Model->finishSave()
koel_1      | #14 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(468): Illuminate\\Database\\Eloquent\\Model->save()
koel_1      | #15 /var/www/html/vendor/laravel/framework/src/Illuminate/Support/helpers.php(263): Illuminate\\Database\\Eloquent\\Builder->Illuminate\\Database\\Eloquent\\{closure}()
koel_1      | #16 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(469): tap()
koel_1      | #17 /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php(23): Illuminate\\Database\\Eloquent\\Builder->updateOrCreate()
koel_1      | #18 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1885): Illuminate\\Database\\Eloquent\\Model->forwardCallTo()
koel_1      | #19 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1897): Illuminate\\Database\\Eloquent\\Model->__call()
koel_1      | #20 /var/www/html/app/Services/FileSynchronizer.php(209): Illuminate\\Database\\Eloquent\\Model::__callStatic()
koel_1      | #21 /var/www/html/app/Services/UploadService.php(35): App\\Services\\FileSynchronizer->sync()
koel_1      | #22 /var/www/html/app/Http/Controllers/API/UploadController.php(25): App\\Services\\UploadService->handleUploadedFile()
koel_1      | #23 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): App\\Http\\Controllers\\API\\UploadController->store()
koel_1      | #24 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction()
koel_1      | #25 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(254): Illuminate\\Routing\\ControllerDispatcher->dispatch()
koel_1      | #26 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(197): Illuminate\\Routing\\Route->runController()
koel_1      | #27 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(693): Illuminate\\Routing\\Route->run()
koel_1      | #28 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}()
koel_1      | #29 /var/www/html/app/Http/Middleware/Authenticate.php(29): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
koel_1      | #30 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): App\\Http\\Middleware\\Authenticate->handle()
koel_1      | #31 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
koel_1      | #32 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle()
koel_1      | #33 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(127): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
koel_1      | #34 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(63): Illuminate\\Routing\\Middleware\\ThrottleRequests->handleRequest()
koel_1      | #35 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Routing\\Middleware\\ThrottleRequests->handle()
koel_1      | #36 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
koel_1      | #37 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(695): Illuminate\\Pipeline\\Pipeline->then()
koel_1      | #38 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(670): Illuminate\\Routing\\Router->runRouteWithinStack()
koel_1      | #39 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(636): Illuminate\\Routing\\Router->runRoute()
koel_1      | #40 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(625): Illuminate\\Routing\\Router->dispatchToRoute()
koel_1      | #41 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(166): Illuminate\\Routing\\Router->dispatch()
koel_1      | #42 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}()
koel_1      | #43 /var/www/html/app/Http/Middleware/ForceHttps.php(26): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
koel_1      | #44 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): App\\Http\\Middleware\\ForceHttps->handle()
koel_1      | #45 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
koel_1      | #46 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
koel_1      | #47 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
koel_1      | #48 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
koel_1      | #49 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
koel_1      | #50 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle()
koel_1      | #51 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
koel_1      | #52 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle()
koel_1      | #53 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
koel_1      | #54 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(141): Illuminate\\Pipeline\\Pipeline->then()
koel_1      | #55 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(110): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter()
koel_1      | #56 /var/www/html/public/index.php(57): Illuminate\\Foundation\\Http\\Kernel->handle()
koel_1      | #57 {main}
koel_1      | "}
<!-- gh-comment-id:810221352 --> @vitoyucepi commented on GitHub (Mar 30, 2021): Maybe also related issue. Reproduced with default `docker-compose.yml` from https://github.com/koel/docker ``` version: "3" services: koel: image: hyzual/koel depends_on: - database ports: - 8080:80 environment: DB_CONNECTION: mysql DB_HOST: database DB_USERNAME: koel DB_PASSWORD: koel DB_DATABASE: koel LOG_CHANNEL: stderr APP_LOG_LEVEL: debug volumes: - music:/music - covers:/var/www/html/public/img/covers - search_index:/var/www/html/storage/search-indexes database: image: mysql/mysql-server:5.7 volumes: - db:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: koel MYSQL_DATABASE: koel MYSQL_USER: koel MYSQL_PASSWORD: koel volumes: db: driver: local music: driver: local covers: driver: local search_index: driver: local ``` ``` koel_1 | 192.168.160.1 - - [30/Mar/2021:13:04:44 +0000] "POST /api/upload HTTP/1.1" 500 341 "http://localhost:8080/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.105 Safari/537.36" koel_1 | [2021-03-30 13:04:45] production.ERROR: SQLSTATE[HY000]: General error: 1 no such table: info {"userId":1,"exception":"[object] (PDOException(code: HY000): SQLSTATE[HY000]: General error: 1 no such table: info at /var/www/html/vendor/teamtnt/tntsearch/src/TNTSearch.php:399) koel_1 | [stacktrace] koel_1 | #0 /var/www/html/vendor/teamtnt/tntsearch/src/TNTSearch.php(399): PDO->query() koel_1 | #1 /var/www/html/vendor/teamtnt/tntsearch/src/TNTSearch.php(370): TeamTNT\\TNTSearch\\TNTSearch->getValueFromInfoTable() koel_1 | #2 /var/www/html/vendor/teamtnt/tntsearch/src/TNTSearch.php(84): TeamTNT\\TNTSearch\\TNTSearch->setStemmer() koel_1 | #3 /var/www/html/vendor/teamtnt/laravel-scout-tntsearch-driver/src/Engines/TNTSearchEngine.php(53): TeamTNT\\TNTSearch\\TNTSearch->selectIndex() koel_1 | #4 /var/www/html/vendor/laravel/scout/src/Searchable.php(63): TeamTNT\\Scout\\Engines\\TNTSearchEngine->update() koel_1 | #5 /var/www/html/vendor/laravel/scout/src/Searchable.php(42): App\\Models\\Artist->queueMakeSearchable() koel_1 | #6 /var/www/html/vendor/laravel/framework/src/Illuminate/Macroable/Traits/Macroable.php(114): Illuminate\\Database\\Eloquent\\Collection->Laravel\\Scout\\{closure}() koel_1 | #7 /var/www/html/vendor/laravel/scout/src/Searchable.php(154): Illuminate\\Support\\Collection->__call() koel_1 | #8 /var/www/html/vendor/laravel/scout/src/ModelObserver.php(87): App\\Models\\Song->searchable() koel_1 | #9 /var/www/html/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(412): Laravel\\Scout\\ModelObserver->saved() koel_1 | #10 /var/www/html/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(237): Illuminate\\Events\\Dispatcher->Illuminate\\Events\\{closure}() koel_1 | #11 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasEvents.php(189): Illuminate\\Events\\Dispatcher->dispatch() koel_1 | #12 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(898): Illuminate\\Database\\Eloquent\\Model->fireModelEvent() koel_1 | #13 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(869): Illuminate\\Database\\Eloquent\\Model->finishSave() koel_1 | #14 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(468): Illuminate\\Database\\Eloquent\\Model->save() koel_1 | #15 /var/www/html/vendor/laravel/framework/src/Illuminate/Support/helpers.php(263): Illuminate\\Database\\Eloquent\\Builder->Illuminate\\Database\\Eloquent\\{closure}() koel_1 | #16 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(469): tap() koel_1 | #17 /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php(23): Illuminate\\Database\\Eloquent\\Builder->updateOrCreate() koel_1 | #18 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1885): Illuminate\\Database\\Eloquent\\Model->forwardCallTo() koel_1 | #19 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1897): Illuminate\\Database\\Eloquent\\Model->__call() koel_1 | #20 /var/www/html/app/Services/FileSynchronizer.php(209): Illuminate\\Database\\Eloquent\\Model::__callStatic() koel_1 | #21 /var/www/html/app/Services/UploadService.php(35): App\\Services\\FileSynchronizer->sync() koel_1 | #22 /var/www/html/app/Http/Controllers/API/UploadController.php(25): App\\Services\\UploadService->handleUploadedFile() koel_1 | #23 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): App\\Http\\Controllers\\API\\UploadController->store() koel_1 | #24 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction() koel_1 | #25 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(254): Illuminate\\Routing\\ControllerDispatcher->dispatch() koel_1 | #26 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(197): Illuminate\\Routing\\Route->runController() koel_1 | #27 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(693): Illuminate\\Routing\\Route->run() koel_1 | #28 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}() koel_1 | #29 /var/www/html/app/Http/Middleware/Authenticate.php(29): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() koel_1 | #30 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): App\\Http\\Middleware\\Authenticate->handle() koel_1 | #31 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() koel_1 | #32 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle() koel_1 | #33 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(127): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() koel_1 | #34 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(63): Illuminate\\Routing\\Middleware\\ThrottleRequests->handleRequest() koel_1 | #35 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Routing\\Middleware\\ThrottleRequests->handle() koel_1 | #36 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() koel_1 | #37 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(695): Illuminate\\Pipeline\\Pipeline->then() koel_1 | #38 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(670): Illuminate\\Routing\\Router->runRouteWithinStack() koel_1 | #39 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(636): Illuminate\\Routing\\Router->runRoute() koel_1 | #40 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(625): Illuminate\\Routing\\Router->dispatchToRoute() koel_1 | #41 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(166): Illuminate\\Routing\\Router->dispatch() koel_1 | #42 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}() koel_1 | #43 /var/www/html/app/Http/Middleware/ForceHttps.php(26): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() koel_1 | #44 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): App\\Http\\Middleware\\ForceHttps->handle() koel_1 | #45 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() koel_1 | #46 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle() koel_1 | #47 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() koel_1 | #48 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle() koel_1 | #49 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() koel_1 | #50 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle() koel_1 | #51 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() koel_1 | #52 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle() koel_1 | #53 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() koel_1 | #54 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(141): Illuminate\\Pipeline\\Pipeline->then() koel_1 | #55 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(110): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter() koel_1 | #56 /var/www/html/public/index.php(57): Illuminate\\Foundation\\Http\\Kernel->handle() koel_1 | #57 {main} koel_1 | "} ```
Author
Owner

@phanan commented on GitHub (Apr 11, 2021):

I think it's unrelated to Koel, rather TNTSearch as seen in the log—please open an issue there. Even so, I'd like to think that TNTSearch should already be able to handle more than a handful of concurrent updates.

<!-- gh-comment-id:817348267 --> @phanan commented on GitHub (Apr 11, 2021): I think it's unrelated to Koel, rather TNTSearch as seen in the log—please open an issue there. Even so, I'd like to think that TNTSearch should already be able to handle more than a handful of concurrent updates.
Author
Owner

@Zaedus commented on GitHub (Jun 20, 2022):

For those who are getting this error still, I recommend just continuously running php artisan koel:sync until you get all of your songs synced. Slowly but surely it syncs. You can even write a bash script to just keep syncing every time it fails:

while true
do
    php artisan koel:sync
    sleep 1
done

Make sure to keep an eye on this though! It does not stop until you manually Control-C it.

<!-- gh-comment-id:1159881631 --> @Zaedus commented on GitHub (Jun 20, 2022): For those who are getting this error still, I recommend just continuously running `php artisan koel:sync` until you get all of your songs synced. Slowly but surely it syncs. You can even write a bash script to just keep syncing every time it fails: ```bash while true do php artisan koel:sync sleep 1 done ``` Make sure to keep an eye on this though! It does not stop until you manually Control-C it.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/koel-koel#745
No description provided.