Before submitting your issue, please verify the following.
Shoko Version
5.3.3.0
Shoko Version - Daily Commit
No response
Install Type
Linux - Bare Metal (Debian 13)
Description
During an import some files silently fail to be imported, but don't show up on following imports. The logs show there was an exception during the file import job because the ID already exists.
17:45:21| JobRunShell --- Job Import.DiscoverFileJob_FilePath:"/mnt/media/Anime/Shows/[Abystoma] Zaregoto - The Kubikiri Cycle (BD 720p)/[Abystoma] Kubikiri Cycle 03 - Day 4 (1) Beheading 1 (BD 720p) [83ED4529].mkv" threw a JobExecutionException: : Parameters: refire = False, unscheduleFiringTrigger = False, unscheduleAllTriggers = False
Quartz.JobExecutionException: Couldn't store job: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:1782', because one already exists with this identification.
Looking at the database, we see there is already a file with this same ID:
sqlite> SELECT * FROM VideoLocal WHERE VideoLocalID == 1782;
1782|31D6CFE0D16AE931B73C59D7E0C089C0|00000000|D41D8CD98F00B204E9800998ECF8427E|DA39A3EE5E6B4B0D3255BFEF95601890AFD80709|0|0|1|2026-06-03 00:36:05.377843|cor.extras.voices.of.a.distant.star.makoto.shinkai.v2.[D3A130BF].mkv|2025-03-05 20:13:27.4159491|0||0|0|||
Furthermore, the file which failed to be imported shows up in the VideoLocal_Place table, but not in VideoLocal.
sqlite> SELECT * FROM VideoLocal_Place WHERE FilePath GLOB "*Kubikiri Cycle 03*";
3138|1782|[Abystoma] Zaregoto - The Kubikiri Cycle (BD 720p)/[Abystoma] Kubikiri Cycle 03 - Day 4 (1) Beheading 1 (BD 720p) [83ED4529].mkv|1|1
sqlite> SELECT * FROM VideoLocal WHERE FileName GLOB "*Kubikiri Cycle 03*";
sqlite>
After deleting the entry from the VideoLocal_Place table, the file is found during a new import and is imported successfully.
Also, all the exceptions occurred with the same ID which happens to belong to a file which was empty at the time of the issue.
$ file /mnt/media/Anime/Movies/\[niizk\]\ Voices\ of\ a\ Distant\ Star/cor.extras.voices.of.a.distant.star.makoto.shinkai.v2.\[D3A130BF\].mkv
/mnt/media/Anime/Movies/[niizk] Voices of a Distant Star/cor.extras.voices.of.a.distant.star.makoto.shinkai.v2.[D3A130BF].mkv: empty
17:43:31| ImportFolderWatcher: /mnt/media/Anime/Movies/ --- File Event Occurred (not added yet): Changed, /mnt/media/Anime/Movies/[niizk] Voices of a Distant Star/cor.extras.voices.of.a.distant.star.makoto.shinkai.v2.[D3A130BF].mkv
17:43:32| ImportFolderWatcher: /mnt/media/Anime/Movies/ --- Failed to access (or filesize is 0) Attempt # 1, /mnt/media/Anime/Movies/[niizk] Voices of a Distant Star/cor.extras.voices.of.a.distant.star.makoto.shinkai.v2.[D3A130BF].mkv
17:43:33| ImportFolderWatcher: /mnt/media/Anime/Movies/ --- Failed to access (or filesize is 0) Attempt # 2, /mnt/media/Anime/Movies/[niizk] Voices of a Distant Star/cor.extras.voices.of.a.distant.star.makoto.shinkai.v2.[D3A130BF].mkv
17:43:34| ImportFolderWatcher: /mnt/media/Anime/Movies/ --- Failed to access (or filesize is 0) Attempt # 3, /mnt/media/Anime/Movies/[niizk] Voices of a Distant Star/cor.extras.voices.of.a.distant.star.makoto.shinkai.v2.[D3A130BF].mkv
17:43:35| ImportFolderWatcher: /mnt/media/Anime/Movies/ --- Failed to access (or filesize is 0) Attempt # 4, /mnt/media/Anime/Movies/[niizk] Voices of a Distant Star/cor.extras.voices.of.a.distant.star.makoto.shinkai.v2.[D3A130BF].mkv
17:43:36| ImportFolderWatcher: /mnt/media/Anime/Movies/ --- Failed to access (or filesize is 0) Attempt # 5, /mnt/media/Anime/Movies/[niizk] Voices of a Distant Star/cor.extras.voices.of.a.distant.star.makoto.shinkai.v2.[D3A130BF].mkv
17:43:37| ImportFolderWatcher: /mnt/media/Anime/Movies/ --- Failed to access (or filesize is 0) Attempt # 6, /mnt/media/Anime/Movies/[niizk] Voices of a Distant Star/cor.extras.voices.of.a.distant.star.makoto.shinkai.v2.[D3A130BF].mkv
17:43:38| ImportFolderWatcher: /mnt/media/Anime/Movies/ --- Failed to access (or filesize is 0) Attempt # 7, /mnt/media/Anime/Movies/[niizk] Voices of a Distant Star/cor.extras.voices.of.a.distant.star.makoto.shinkai.v2.[D3A130BF].mkv
17:43:39| ImportFolderWatcher: /mnt/media/Anime/Movies/ --- Failed to access (or filesize is 0) Attempt # 8, /mnt/media/Anime/Movies/[niizk] Voices of a Distant Star/cor.extras.voices.of.a.distant.star.makoto.shinkai.v2.[D3A130BF].mkv
17:43:40| ImportFolderWatcher: /mnt/media/Anime/Movies/ --- Failed to access (or filesize is 0) Attempt # 9, /mnt/media/Anime/Movies/[niizk] Voices of a Distant Star/cor.extras.voices.of.a.distant.star.makoto.shinkai.v2.[D3A130BF].mkv
18:10:55| Main --- Job Started: Reading MediaInfo for File | File Path: [niizk] Voices of a Distant Star/cor.extras.voices.of.a.distant.star.makoto.shinkai.v2.[D3A130BF].mkv
18:10:55| MediaInfoJob_VideoLocalID:1782 --- Processing MediaInfoJob: [niizk] Voices of a Distant Star/cor.extras.voices.of.a.distant.star.makoto.shinkai.v2.[D3A130BF].mkv
18:10:55| VideoLocal_PlaceService --- Getting media info for: /mnt/media/Anime/Movies/[niizk] Voices of a Distant Star/cor.extras.voices.of.a.distant.star.makoto.shinkai.v2.[D3A130BF].mkv
18:10:55| VideoLocal_PlaceService --- File /mnt/media/Anime/Movies/[niizk] Voices of a Distant Star/cor.extras.voices.of.a.distant.star.makoto.shinkai.v2.[D3A130BF].mkv failed to read MediaInfo
18:10:55| Main --- Job Completed: Reading MediaInfo for File | File Path: [niizk] Voices of a Distant Star/cor.extras.voices.of.a.distant.star.makoto.shinkai.v2.[D3A130BF].mkv
Steps to Reproduce
I've not attempted to reproduce the issue after resolving it, as I'm not sure how to force a file import process to have a certain ID.
Log File
This is the full stack trace of one of the exceptions
$ sudo journalctl -o cat --output-fields=MESSAGE -u shoko | grep -m1 -B1 -A48 -P "^ Quartz\.JobExecutionException: Couldn't store job: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:\\d+', because one already exists with this identification\."
12:12:09| JobRunShell --- Job Import.HashFileJob_FilePath:"/mnt/media/Anime/Shows/[ANE] Bakemonogatari [BDRip 1080p x264 FLAC]/Bonus/[ANE] Bakemonogatari - Ep11 Creditless Ending [BDRip 1080p x264 FLAC].mkv" threw a JobExecutionException: : Parameters: refire = False, unscheduleFiringTrigger = False, unscheduleAllTriggers = False
Quartz.JobExecutionException: Couldn't store job: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:1782', because one already exists with this identification.
---> Quartz.JobPersistenceException: Couldn't store job: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:1782', because one already exists with this identification.
---> Quartz.ObjectAlreadyExistsException: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:1782', because one already exists with this identification.
at Quartz.ThrowHelper.ThrowObjectAlreadyExistsException(IJobDetail offendingJob)
at Quartz.Impl.AdoJobStore.JobStoreSupport.StoreJob(ConnectionAndTransactionHolder conn, IJobDetail newJob, Boolean replaceExisting, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at Quartz.ThrowHelper.ThrowJobPersistenceException(String message, Exception innerException)
at Quartz.Impl.AdoJobStore.JobStoreSupport.StoreJob(ConnectionAndTransactionHolder conn, IJobDetail newJob, Boolean replaceExisting, CancellationToken cancellationToken)
at Quartz.Impl.AdoJobStore.JobStoreSupport.<>c__DisplayClass155_0.<<StoreJobAndTrigger>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at Quartz.Impl.AdoJobStore.JobStoreSupport.<>c__DisplayClass271_0.<<ExecuteInWriteLock>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at Quartz.Impl.AdoJobStore.JobStoreSupport.ExecuteInNonManagedLock[T](String lockName, Func`2 txCallback, Func`3 txValidator, Nullable`1 requesterId, Boolean writeLock, CancellationToken cancellationToken)
at Quartz.Impl.AdoJobStore.JobStoreSupport.ExecuteInNonManagedLock[T](String lockName, Func`2 txCallback, Func`3 txValidator, Nullable`1 requesterId, Boolean writeLock, CancellationToken cancellationToken)
at Quartz.Impl.AdoJobStore.JobStoreSupport.ExecuteInWriteLock(String lockName, Func`2 txCallback, Nullable`1 requesterId, CancellationToken cancellationToken)
at Quartz.Impl.AdoJobStore.JobStoreSupport.StoreJobAndTrigger(IJobDetail newJob, IOperableTrigger newTrigger, CancellationToken cancellationToken)
at Shoko.Server.Scheduling.ThreadPooledJobStore.StoreJobAndTrigger(IJobDetail newJob, IOperableTrigger newTrigger, CancellationToken cancellationToken) in /home/runner/work/ShokoServer/ShokoServer/Shoko.Server/Scheduling/ThreadPooledJobStore.cs:line 284
at Quartz.Core.QuartzScheduler.ScheduleJob(IJobDetail jobDetail, ITrigger trigger, CancellationToken cancellationToken)
at Shoko.Server.Scheduling.QuartzExtensions.StartJob(IScheduler scheduler, IJobDetail job, IScheduleBuilder scheduleBuilder, Int32 priority, Boolean replaceExisting, CancellationToken token) in /home/runner/work/ShokoServer/ShokoServer/Shoko.Server/Scheduling/QuartzExtensions.cs:line 84
at Shoko.Server.Scheduling.QuartzExtensions.StartJobNow[T](IScheduler scheduler, Action`1 data) in /home/runner/work/ShokoServer/ShokoServer/Shoko.Server/Scheduling/QuartzExtensions.cs:line 46
at Shoko.Server.Scheduling.Jobs.Shoko.HashFileJob.Process() in /home/runner/work/ShokoServer/ShokoServer/Shoko.Server/Scheduling/Jobs/Shoko/HashFileJob.cs:line 103
at Shoko.Server.Scheduling.Jobs.BaseJob.Execute(IJobExecutionContext context) in /home/runner/work/ShokoServer/ShokoServer/Shoko.Server/Scheduling/Jobs/BaseJob.cs:line 33 [See nested exception: Quartz.ObjectAlreadyExistsException: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:1782', because one already exists with this identification.
at Quartz.ThrowHelper.ThrowObjectAlreadyExistsException(IJobDetail offendingJob)
at Quartz.Impl.AdoJobStore.JobStoreSupport.StoreJob(ConnectionAndTransactionHolder conn, IJobDetail newJob, Boolean replaceExisting, CancellationToken cancellationToken)]
--- End of inner exception stack trace ---
at Shoko.Server.Scheduling.Jobs.BaseJob.Execute(IJobExecutionContext context) in /home/runner/work/ShokoServer/ShokoServer/Shoko.Server/Scheduling/Jobs/BaseJob.cs:line 50
at Quartz.Core.JobRunShell.Run(CancellationToken cancellationToken) [See nested exception: Quartz.JobPersistenceException: Couldn't store job: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:1782', because one already exists with this identification.
---> Quartz.ObjectAlreadyExistsException: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:1782', because one already exists with this identification.
at Quartz.ThrowHelper.ThrowObjectAlreadyExistsException(IJobDetail offendingJob)
at Quartz.Impl.AdoJobStore.JobStoreSupport.StoreJob(ConnectionAndTransactionHolder conn, IJobDetail newJob, Boolean replaceExisting, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at Quartz.ThrowHelper.ThrowJobPersistenceException(String message, Exception innerException)
at Quartz.Impl.AdoJobStore.JobStoreSupport.StoreJob(ConnectionAndTransactionHolder conn, IJobDetail newJob, Boolean replaceExisting, CancellationToken cancellationToken)
at Quartz.Impl.AdoJobStore.JobStoreSupport.<>c__DisplayClass155_0.<<StoreJobAndTrigger>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at Quartz.Impl.AdoJobStore.JobStoreSupport.<>c__DisplayClass271_0.<<ExecuteInWriteLock>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at Quartz.Impl.AdoJobStore.JobStoreSupport.ExecuteInNonManagedLock[T](String lockName, Func`2 txCallback, Func`3 txValidator, Nullable`1 requesterId, Boolean writeLock, CancellationToken cancellationToken)
at Quartz.Impl.AdoJobStore.JobStoreSupport.ExecuteInNonManagedLock[T](String lockName, Func`2 txCallback, Func`3 txValidator, Nullable`1 requesterId, Boolean writeLock, CancellationToken cancellationToken)
at Quartz.Impl.AdoJobStore.JobStoreSupport.ExecuteInWriteLock(String lockName, Func`2 txCallback, Nullable`1 requesterId, CancellationToken cancellationToken)
at Quartz.Impl.AdoJobStore.JobStoreSupport.StoreJobAndTrigger(IJobDetail newJob, IOperableTrigger newTrigger, CancellationToken cancellationToken)
at Shoko.Server.Scheduling.ThreadPooledJobStore.StoreJobAndTrigger(IJobDetail newJob, IOperableTrigger newTrigger, CancellationToken cancellationToken) in /home/runner/work/ShokoServer/ShokoServer/Shoko.Server/Scheduling/ThreadPooledJobStore.cs:line 284
at Quartz.Core.QuartzScheduler.ScheduleJob(IJobDetail jobDetail, ITrigger trigger, CancellationToken cancellationToken)
at Shoko.Server.Scheduling.QuartzExtensions.StartJob(IScheduler scheduler, IJobDetail job, IScheduleBuilder scheduleBuilder, Int32 priority, Boolean replaceExisting, CancellationToken token) in /home/runner/work/ShokoServer/ShokoServer/Shoko.Server/Scheduling/QuartzExtensions.cs:line 84
at Shoko.Server.Scheduling.QuartzExtensions.StartJobNow[T](IScheduler scheduler, Action`1 data) in /home/runner/work/ShokoServer/ShokoServer/Shoko.Server/Scheduling/QuartzExtensions.cs:line 46
at Shoko.Server.Scheduling.Jobs.Shoko.HashFileJob.Process() in /home/runner/work/ShokoServer/ShokoServer/Shoko.Server/Scheduling/Jobs/Shoko/HashFileJob.cs:line 103
at Shoko.Server.Scheduling.Jobs.BaseJob.Execute(IJobExecutionContext context) in /home/runner/work/ShokoServer/ShokoServer/Shoko.Server/Scheduling/Jobs/BaseJob.cs:line 33 [See nested exception: Quartz.ObjectAlreadyExistsException: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:1782', because one already exists with this identification.
at Quartz.ThrowHelper.ThrowObjectAlreadyExistsException(IJobDetail offendingJob)
at Quartz.Impl.AdoJobStore.JobStoreSupport.StoreJob(ConnectionAndTransactionHolder conn, IJobDetail newJob, Boolean replaceExisting, CancellationToken cancellationToken)]]
These are all the occurrences of this kind of exception since the server was transfered from another machine.
$ sudo journalctl -o cat --output-fields=MESSAGE -u shoko | grep -B1 -P "^ Quartz\.JobExecutionException: Couldn't store job: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:\\d+', because one already exists with this identification\."
12:12:09| JobRunShell --- Job Import.HashFileJob_FilePath:"/mnt/media/Anime/Shows/[ANE] Bakemonogatari [BDRip 1080p x264 FLAC]/Bonus/[ANE] Bakemonogatari - Ep11 Creditless Ending [BDRip 1080p x264 FLAC].mkv" threw a JobExecutionException: : Parameters: refire = False, unscheduleFiringTrigger = False, unscheduleAllTriggers = False
Quartz.JobExecutionException: Couldn't store job: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:1782', because one already exists with this identification.
--
17:38:10| JobRunShell --- Job Import.DiscoverFileJob_FilePath:"/mnt/media/Anime/Shows/[Commie] She and Her Cat ~Everything Flows~ [BD 1080p AAC]/[Commie] She and Her Cat ~Everything Flows~ - 02 [BD 1080p AAC] [A7806CBF].mkv" threw a JobExecutionException: : Parameters: refire = False, unscheduleFiringTrigger = False, unscheduleAllTriggers = False
Quartz.JobExecutionException: Couldn't store job: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:1782', because one already exists with this identification.
--
17:38:10| JobRunShell --- Job Import.DiscoverFileJob_FilePath:"/mnt/media/Anime/Shows/[Abystoma] Zaregoto - The Kubikiri Cycle (BD 720p)/[Abystoma] Kubikiri Cycle 06 - Day 5 (2) Lies (BD 720p) [1CA1AADA].mkv" threw a JobExecutionException: : Parameters: refire = False, unscheduleFiringTrigger = False, unscheduleAllTriggers = False
Quartz.JobExecutionException: Couldn't store job: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:1782', because one already exists with this identification.
--
17:38:10| JobRunShell --- Job Import.DiscoverFileJob_FilePath:"/mnt/media/Anime/Shows/[Abystoma] Zaregoto - The Kubikiri Cycle (BD 720p)/[Abystoma] Kubikiri Cycle 03 - Day 4 (1) Beheading 1 (BD 720p) [83ED4529].mkv" threw a JobExecutionException: : Parameters: refire = False, unscheduleFiringTrigger = False, unscheduleAllTriggers = False
Quartz.JobExecutionException: Couldn't store job: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:1782', because one already exists with this identification.
--
17:38:11| JobRunShell --- Job Import.DiscoverFileJob_FilePath:"/mnt/media/Anime/Shows/[Abystoma] Zaregoto - The Kubikiri Cycle (BD 720p)/[Abystoma] Kubikiri Cycle 05 - Day 5 (1) Beheading 2 (BD 720p) [6C384E00].mkv" threw a JobExecutionException: : Parameters: refire = False, unscheduleFiringTrigger = False, unscheduleAllTriggers = False
Quartz.JobExecutionException: Couldn't store job: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:1782', because one already exists with this identification.
--
17:38:11| JobRunShell --- Job Import.DiscoverFileJob_FilePath:"/mnt/media/Anime/Shows/[Abystoma] Zaregoto - The Kubikiri Cycle (BD 720p)/[Abystoma] Kubikiri Cycle 04 - Day 4 (2) The 0.14 Tragedy (BD 720p) [D239087B].mkv" threw a JobExecutionException: : Parameters: refire = False, unscheduleFiringTrigger = False, unscheduleAllTriggers = False
Quartz.JobExecutionException: Couldn't store job: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:1782', because one already exists with this identification.
--
17:38:18| JobRunShell --- Job Import.DiscoverFileJob_FilePath:"/mnt/media/Anime/Shows/[Abystoma] Zaregoto - The Kubikiri Cycle (BD 720p)/[Abystoma] Kubikiri Cycle 07 - Day 5 (3) Wet Wing Raven (BD 720p) [C6CC0EF6].mkv" threw a JobExecutionException: : Parameters: refire = False, unscheduleFiringTrigger = False, unscheduleAllTriggers = False
Quartz.JobExecutionException: Couldn't store job: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:1782', because one already exists with this identification.
--
17:39:29| JobRunShell --- Job Import.DiscoverFileJob_FilePath:"/mnt/media/Anime/Shows/[F-B Ureshii] Kaiba 01-12[AAC-H264-720p] (Unofficial Batch)/[F-B_Ureshii]_Kaiba_-_11_[AAC-H264-720p][048C066E].mkv" threw a JobExecutionException: : Parameters: refire = False, unscheduleFiringTrigger = False, unscheduleAllTriggers = False
Quartz.JobExecutionException: Couldn't store job: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:1782', because one already exists with this identification.
--
17:45:20| JobRunShell --- Job Import.DiscoverFileJob_FilePath:"/mnt/media/Anime/Shows/[Commie] She and Her Cat ~Everything Flows~ [BD 1080p AAC]/[Commie] She and Her Cat ~Everything Flows~ - 02 [BD 1080p AAC] [A7806CBF].mkv" threw a JobExecutionException: : Parameters: refire = False, unscheduleFiringTrigger = False, unscheduleAllTriggers = False
Quartz.JobExecutionException: Couldn't store job: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:1782', because one already exists with this identification.
--
17:45:20| JobRunShell --- Job Import.DiscoverFileJob_FilePath:"/mnt/media/Anime/Shows/[Abystoma] Zaregoto - The Kubikiri Cycle (BD 720p)/[Abystoma] Kubikiri Cycle 07 - Day 5 (3) Wet Wing Raven (BD 720p) [C6CC0EF6].mkv" threw a JobExecutionException: : Parameters: refire = False, unscheduleFiringTrigger = False, unscheduleAllTriggers = False
Quartz.JobExecutionException: Couldn't store job: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:1782', because one already exists with this identification.
--
17:45:20| JobRunShell --- Job Import.DiscoverFileJob_FilePath:"/mnt/media/Anime/Shows/[Abystoma] Zaregoto - The Kubikiri Cycle (BD 720p)/[Abystoma] Kubikiri Cycle 04 - Day 4 (2) The 0.14 Tragedy (BD 720p) [D239087B].mkv" threw a JobExecutionException: : Parameters: refire = False, unscheduleFiringTrigger = False, unscheduleAllTriggers = False
Quartz.JobExecutionException: Couldn't store job: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:1782', because one already exists with this identification.
--
17:45:21| JobRunShell --- Job Import.DiscoverFileJob_FilePath:"/mnt/media/Anime/Shows/[Abystoma] Zaregoto - The Kubikiri Cycle (BD 720p)/[Abystoma] Kubikiri Cycle 05 - Day 5 (1) Beheading 2 (BD 720p) [6C384E00].mkv" threw a JobExecutionException: : Parameters: refire = False, unscheduleFiringTrigger = False, unscheduleAllTriggers = False
Quartz.JobExecutionException: Couldn't store job: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:1782', because one already exists with this identification.
--
17:45:21| JobRunShell --- Job Import.DiscoverFileJob_FilePath:"/mnt/media/Anime/Shows/[Abystoma] Zaregoto - The Kubikiri Cycle (BD 720p)/[Abystoma] Kubikiri Cycle 03 - Day 4 (1) Beheading 1 (BD 720p) [83ED4529].mkv" threw a JobExecutionException: : Parameters: refire = False, unscheduleFiringTrigger = False, unscheduleAllTriggers = False
Quartz.JobExecutionException: Couldn't store job: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:1782', because one already exists with this identification.
--
17:45:21| JobRunShell --- Job Import.DiscoverFileJob_FilePath:"/mnt/media/Anime/Shows/[Abystoma] Zaregoto - The Kubikiri Cycle (BD 720p)/[Abystoma] Kubikiri Cycle 06 - Day 5 (2) Lies (BD 720p) [1CA1AADA].mkv" threw a JobExecutionException: : Parameters: refire = False, unscheduleFiringTrigger = False, unscheduleAllTriggers = False
Quartz.JobExecutionException: Couldn't store job: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:1782', because one already exists with this identification.
--
17:48:14| JobRunShell --- Job Import.DiscoverFileJob_FilePath:"/mnt/media/Anime/Shows/[F-B Ureshii] Kaiba 01-12[AAC-H264-720p] (Unofficial Batch)/[F-B_Ureshii]_Kaiba_-_11_[AAC-H264-720p][048C066E].mkv" threw a JobExecutionException: : Parameters: refire = False, unscheduleFiringTrigger = False, unscheduleAllTriggers = False
Quartz.JobExecutionException: Couldn't store job: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:1782', because one already exists with this identification.
--
17:48:19| JobRunShell --- Job Import.DiscoverFileJob_FilePath:"/mnt/media/Anime/Shows/[DmonHiro] Psycho-Pass 3 (BD, 720p)/Clean Opening.mkv" threw a JobExecutionException: : Parameters: refire = False, unscheduleFiringTrigger = False, unscheduleAllTriggers = False
Quartz.JobExecutionException: Couldn't store job: Unable to store Job: 'Import.ProcessFileJob_VideoLocalID:1782', because one already exists with this identification.
Screenshots
No response
Before submitting your issue, please verify the following.
Shoko Version
5.3.3.0
Shoko Version - Daily Commit
No response
Install Type
Linux - Bare Metal (Debian 13)
Description
During an import some files silently fail to be imported, but don't show up on following imports. The logs show there was an exception during the file import job because the ID already exists.
Looking at the database, we see there is already a file with this same ID:
Furthermore, the file which failed to be imported shows up in the VideoLocal_Place table, but not in VideoLocal.
After deleting the entry from the VideoLocal_Place table, the file is found during a new import and is imported successfully.
Also, all the exceptions occurred with the same ID which happens to belong to a file which was empty at the time of the issue.
Steps to Reproduce
I've not attempted to reproduce the issue after resolving it, as I'm not sure how to force a file import process to have a certain ID.
Log File
This is the full stack trace of one of the exceptions
These are all the occurrences of this kind of exception since the server was transfered from another machine.
Screenshots
No response