Ombi-app / Ombi

Want a Movie or TV Show on Plex/Emby/Jellyfin? Use Ombi!
http://ombi.io
GNU General Public License v2.0
3.72k stars 395 forks source link

Movie search doesn't work after upgrade to v3.0.4880 #3253

Closed paulfantom closed 4 years ago

paulfantom commented 4 years ago

Describe the bug A clear and concise description of what the bug is. Section Movies in Search tab doesn't show any movies and don't return any results after trying to search. There is no such problem in TV Shows tab.

To Reproduce Steps to reproduce the behavior:

  1. Go to 'Search'
  2. Click on 'Movies' (already at this point there is no proposed movies)
  3. Enter any movie title and press Enter or click on looking glass icon
  4. Nothing happens

Expected behavior Movie propositions are displayed and search works.

Screenshots Screenshot_20191113_110352

Logs (Logs directory where Ombi is located) I think this one is relevant:

fail: Ombi.Schedule.Jobs.Plex.PlexContentSync[2008]
      Exception when adding new Movie <NAME_REDACTED>
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 1: 'no such column: x.RequestId'.
   at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
   at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements(Stopwatch timer)+MoveNext()
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteAsync(IRelationalConnection connection, DbCommandMethod executeMethod, IReadOnlyDictionary`2 parameterValues, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.AsyncQueryingEnumerable`1.AsyncEnumerator.BufferlessMoveNext(DbContext _, Boolean buffer, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.AsyncQueryingEnumerable`1.AsyncEnumerator.MoveNext(CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider.AsyncSelectEnumerable`2.AsyncSelectEnumerator.MoveNext(CancellationToken cancellationToken)
   at System.Linq.AsyncEnumerable.FirstOrDefault_[TSource](IAsyncEnumerable`1 source, CancellationToken cancellationToken) in D:\a\1\s\Ix.NET\Source\System.Interactive.Async\First.cs:line 144
   at Microsoft.EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider.TaskResultAsyncEnumerable`1.Enumerator.MoveNext(CancellationToken cancellationToken)
   at System.Linq.AsyncEnumerable.SelectEnumerableAsyncIterator`2.MoveNextCore(CancellationToken cancellationToken) in D:\a\1\s\Ix.NET\Source\System.Interactive.Async\Select.cs:line 106
   at System.Linq.AsyncEnumerable.AsyncIterator`1.MoveNext(CancellationToken cancellationToken) in D:\a\1\s\Ix.NET\Source\System.Interactive.Async\AsyncIterator.cs:line 98
   at Microsoft.EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider.ExceptionInterceptor`1.EnumeratorExceptionInterceptor.MoveNext(CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.ExecuteSingletonAsyncQuery[TResult](QueryContext queryContext, Func`2 compiledQuery, IDiagnosticsLogger`1 logger, Type contextType)
   at Ombi.Store.Repository.PlexServerContentRepository.GetFirstContentByCustom(Expression`1 predicate) in C:\projects\requestplex\src\Ombi.Store\Repository\PlexContentRepository.cs:line 90
   at Ombi.Schedule.Jobs.Plex.PlexContentSync.ProcessServer(PlexServers servers, Boolean recentlyAddedSearch) in C:\projects\requestplex\src\Ombi.Schedule\Jobs\Plex\PlexContentSync.cs:line 246

Desktop (please complete the following information):

Ombi Version (please complete the following information):

Additional context This happened after upgrade from Ombi v3.0.4817. Everything is run in containers using linuxserver/ombi with persistent volume attached. Excerpt from docker-compose:

  ombi:
    image: linuxserver/ombi
    restart: 'always'
    ports:
      - 3579:3579
    networks:
      - web
    volumes:
      - ombi:/config
...
volumes:
  ombi:
ombi-bot commented 4 years ago

Hi!
Thanks for the issue report. Before a real human comes by, please make sure you used our bug report format.
Have you looked at the wiki yet? https://github.com/tidusjar/ombi/wiki/
Before posting make sure you also read our FAQ.
Make the title describe your issue. Having 'not working' or 'I get this bug' for 100 issues, isn't really helpful.
If we need more information or there is some progress we tag the issue or update the tag and keep you updated.
Thanks!
Ombi Bot.

keliansb commented 4 years ago

I'm facing the same issue with latest version 3.0.4880. Movie search doesn't work and there is no cover for TV shows.

ZiemusG commented 4 years ago

i have the same problem after update to v3.0.4880 no such column: x.RequestId'.
My Ombi: Version 3.0.4880 Branch master Github https://github.com/tidusjar/Ombi Discord https://discord.gg/Sa7wNWb Reddit https://www.reddit.com/r/Ombi/ Issues https://github.com/tidusjar/Ombi/issues Wiki https://github.com/tidusjar/Ombi/wiki OS Architecture X64 OS Description Linux 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) Process Architecture X64 Application Base Path /opt/Ombi Storage Path /etc/Ombi/ Ombi Database Sqlite - Data Source=/etc/Ombi/Ombi.db External Database Sqlite - Data Source=/etc/Ombi/OmbiExternal.db Settings Database Sqlite - Data Source=/etc/Ombi/OmbiSettings.db

murac commented 4 years ago

yes me too! everything was solid up till last night.

i noticed plex library syncs are also affected

tidusjar commented 4 years ago

Can someone please email me the OmbiExternal.db to tidusjar@gmail.com

tidusjar commented 4 years ago

Fixed in v3.0.4887

rsteckler commented 4 years ago

This is still broken for me on 4890 and 4892. The Obi system page still says that the DB is Sqlite.

tidusjar commented 4 years ago

Run 4887. Then do some searching etc and then upgrade to the latest

rsteckler commented 4 years ago

I continue to get the same error on 4887.

Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 1: 'no such column: x.RequestId'.

Reverted to 4880. Same error. Reverted to 4817. New error:

Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing value: <. Path '', line 0, position 0.
caused by a deeper point in the stack of:
 Ombi.Api.FanartTv.FanartTvApi.GetTvImages(Int32 tvdbId, String token) in C:\projects\requestplex\src\Ombi.Api.FanartTv\FanartTvApi.cs:line 27

, but searches worked.

Then I started stepping forward through the releases:
Forward to 4880 and the x.RequestId error comes back again. Forward to 4887 and the x.RequestId error persists. Forward to 4892 and the x.RequestId error persists.

ghost commented 4 years ago

Encountered the same issue on latest build as of this writing. Reverting to 4817 has fixed it. This issue should not be closed @tidusjar.

tidusjar commented 4 years ago

@Spass1966 I had thought I'd fixed the issue. That's why the issue is closed. Apologies I cannot monitor the thread 24/7.

For anyone experiencing the issue, please run the following against your SQLite database. Due the the recent changes to the multiple DB providers, if the migrations did not run in the correct order it has caused this issue and it's quite difficult to fix with EF migrations due to some users have the issue, and some dont.


ALTER TABLE PlexServerContent ADD COLUMN RequestId INTEGER NULL;
ghost commented 4 years ago

Apologies for the stupid question but how do I access the SQLite database from inside the LinuxServer container? sqlite3 doesn't seem to be an available command. I've worked with postgresql before and am feeling a little ashamed of my lack of knowledge here.

rsteckler commented 4 years ago

I ran the alter table command and still get the error. I wonder if my error is for a different table. Here's my full stack trace (though note that it's upside down)

    2019-11-18 07:20:56 
at Ombi.ErrorHandlingMiddleware.Invoke(HttpContext context) in C:\projects\requestplex\src\Ombi\Middleware\ErrorHandlingMiddlewear.cs:line 24
2019-11-18 07:20:56 
at Ombi.ApiKeyMiddlewear.Invoke(HttpContext context) in C:\projects\requestplex\src\Ombi\Middleware\ApiKeyMiddlewear.cs:line 51
2019-11-18 07:20:56 
at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext)
2019-11-18 07:20:56 
at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIIndexMiddleware.Invoke(HttpContext httpContext)
2019-11-18 07:20:56 
at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
2019-11-18 07:20:56 
at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
2019-11-18 07:20:56 
at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
2019-11-18 07:20:56 
at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()
2019-11-18 07:20:56 
at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
2019-11-18 07:20:56 
at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)
2019-11-18 07:20:56 
at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()
2019-11-18 07:20:56 
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
2019-11-18 07:20:56 
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
2019-11-18 07:20:56 
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
2019-11-18 07:20:56 
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
2019-11-18 07:20:56 
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()
2019-11-18 07:20:56 
at Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
2019-11-18 07:20:56 
at lambda_method(Closure , Object )
2019-11-18 07:20:56 
at Ombi.Controllers.SearchController.GetShowInfo(Int32 tvdbId) in C:\projects\requestplex\src\Ombi\Controllers\SearchController.cs:line 274
2019-11-18 07:20:56 
at Ombi.Core.Engine.TvSearchEngine.GetShowInformation(Int32 tvdbid) in C:\projects\requestplex\src\Ombi.Core\Engine\TvSearchEngine.cs:line 120
2019-11-18 07:20:56 
at Ombi.Core.Engine.TvSearchEngine.ProcessResult(SearchTvShowViewModel item) in C:\projects\requestplex\src\Ombi.Core\Engine\TvSearchEngine.cs:line 171
2019-11-18 07:20:56 
at Ombi.Core.Engine.Interfaces.BaseEngine.RunSearchRules(SearchViewModel model) in C:\projects\requestplex\src\Ombi.Core\Engine\Interfaces\BaseEngine.cs:line 53
2019-11-18 07:20:56 
at Ombi.Core.Rule.RuleEvaluator.StartSearchRules(SearchViewModel obj) in C:\projects\requestplex\src\Ombi.Core\Rule\RuleEvaluator.cs:line 54
2019-11-18 07:20:56 
at Ombi.Core.Rule.Rules.Search.PlexAvailabilityRule.Execute(SearchViewModel obj) in C:\projects\requestplex\src\Ombi.Core\Rule\Rules\Search\PlexAvailabilityRule.cs:line 31
2019-11-18 07:20:56 
at Ombi.Store.Repository.PlexServerContentRepository.Get(String providerId) in C:\projects\requestplex\src\Ombi.Store\Repository\PlexContentRepository.cs:line 66
2019-11-18 07:20:56 
at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.ExecuteSingletonAsyncQuery[TResult](QueryContext queryContext, Func`2 compiledQuery, IDiagnosticsLogger`1 logger, Type contextType)
2019-11-18 07:20:56 
at Microsoft.EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider.ExceptionInterceptor`1.EnumeratorExceptionInterceptor.MoveNext(CancellationToken cancellationToken)
2019-11-18 07:20:56 
at System.Linq.AsyncEnumerable.AsyncIterator`1.MoveNext(CancellationToken cancellationToken) in D:\a\1\s\Ix.NET\Source\System.Interactive.Async\AsyncIterator.cs:line 98
2019-11-18 07:20:56 
at System.Linq.AsyncEnumerable.SelectEnumerableAsyncIterator`2.MoveNextCore(CancellationToken cancellationToken) in D:\a\1\s\Ix.NET\Source\System.Interactive.Async\Select.cs:line 106
2019-11-18 07:20:56 
at Microsoft.EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider.TaskResultAsyncEnumerable`1.Enumerator.MoveNext(CancellationToken cancellationToken)
2019-11-18 07:20:56 
at System.Linq.AsyncEnumerable.FirstOrDefault_[TSource](IAsyncEnumerable`1 source, CancellationToken cancellationToken) in D:\a\1\s\Ix.NET\Source\System.Interactive.Async\First.cs:line 144
2019-11-18 07:20:56 
at Microsoft.EntityFrameworkCore.Query.Internal.AsyncQueryingEnumerable`1.AsyncEnumerator.MoveNext(CancellationToken cancellationToken)
2019-11-18 07:20:56 
at Microsoft.EntityFrameworkCore.Query.Internal.AsyncQueryingEnumerable`1.AsyncEnumerator.BufferlessMoveNext(DbContext _, Boolean buffer, CancellationToken cancellationToken)
2019-11-18 07:20:56 
at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteAsync(IRelationalConnection connection, DbCommandMethod executeMethod, IReadOnlyDictionary`2 parameterValues, CancellationToken cancellationToken)
2019-11-18 07:20:56 
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
2019-11-18 07:20:56 
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
2019-11-18 07:20:56 
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
2019-11-18 07:20:56 
at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements(Stopwatch timer)+MoveNext()
2019-11-18 07:20:56 
at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
2019-11-18 07:20:56 
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 1: 'no such column: x.RequestId'.
2019-11-18 07:20:56 
Something bad happened, ErrorMiddleware caught this
2019-11-18 07:20:56 
fail: Ombi.ErrorHandlingMiddleware[0]

Here's my table schema:

sqlite> .schema PlexServerContent
CREATE TABLE IF NOT EXISTS "PlexServerContent" (
    "Id" INTEGER NOT NULL CONSTRAINT "PK_PlexServerContent" PRIMARY KEY AUTOINCREMENT,
    "AddedAt" TEXT NOT NULL,
    "ImdbId" TEXT NULL,
    "Key" INTEGER NOT NULL,
    "Quality" TEXT NULL,
    "ReleaseYear" TEXT NULL,
    "TheMovieDbId" TEXT NULL,
    "Title" TEXT NULL,
    "TvDbId" TEXT NULL,
    "Type" INTEGER NOT NULL,
    "Url" TEXT NULL, RequestId INTEGER NULL,
    CONSTRAINT "AK_PlexServerContent_Key" UNIQUE ("Key")
);

Is there a full migration script available somewhere that I can just run and be done?

rsteckler commented 4 years ago

@Spass1966

apt update
apt install sqlite3
cd /config
sqlite3 Ombi.db
dippynark commented 4 years ago

@rsteckler you applied that to Ombi.db? My one doesn't have the PlexServerContent table, needed to use OmbiExternal.db - seems to be working again

tidusjar commented 4 years ago

Sorry guys apply it to the Ombi external db

rsteckler commented 4 years ago

Sorry guys apply it to the Ombi external db

That worked.

Thanks!

deusxanime commented 4 years ago

I had this problem also and fixed it by running the previously recommended SQL query against OmbiExternal.db

ALTER TABLE PlexServerContent ADD COLUMN RequestId INTEGER NULL;

I didn't want to install stuff into my container so I just used the zip version (no install needed on your desktop either) of this SQLite browser/editor. I stopped my Ombi container, opened the OmbiExternal.db with the SQLite editor program, ran the query above, verified it had added the column into the proper table, saved it, and then started the Ombi container back up again. Everything looks like it working again with movies and TV posters showing up, as well as the "no such columns" error now no longer showing up in the logs.

Sibicle commented 4 years ago

Here is a oneliner to fix the issue, assuming you are running in a docker container, your container has ombi in the name, your image requires the config dir to be mounted at /config, and the host is running Debian, Ubuntu, or a related distro that uses apt. If any of these points aren't true, see the details below the command and modify to your needs.

sudo apt update; \
sudo apt install -y sqlite3; \
sqlite3 $( \
  docker inspect --format '{{ range .Mounts }}{{if eq .Destination "/config"}}{{ .Source }}{{end}}{{end}}'  \
  $(docker ps --filter name=ombi --format '{{.ID}}') \
)/app/OmbiExternal.db 'ALTER TABLE PlexServerContent ADD COLUMN RequestId INTEGER NULL'

Explanation of parts:

Update apt & install sqlite3

sudo apt update; \
sudo apt install -y sqlite3;

Inspect container $CONTAINER_ID, list mounts, and if the mount destination is /config, print the source

docker inspect --format \
  '{{ range .Mounts }}{{if eq .Destination "/config"}}{{ .Source }}{{end}}{{end}}'  \
  $CONTAINER_ID

List containers, filtering on ombi. Format output to only include the container id.

docker ps --filter name=ombi --format '{{.ID}}'

Concatenate the inspected directory path with the path to the .db file within the /config dir

$( ... )/app/OmbiExternal.db

Tell sqlite3 to run the actual query

 sqlite3 /opt/ombi/app/OmbiExternal.db 'ALTER TABLE PlexServerContent ADD COLUMN RequestId INTEGER NULL'

After you are done, you can remove sqlite3

sudo apt remove --purge sqlite3
Sibicle commented 4 years ago

It looks like Unraid doesn't have a package manager, but luckily there is a standalone binary for sqlite3 available here. Binary means the file has been compiled to machine code, standalone means the file knows how to perform its role (look at sqlite .db files) without any help.

First you need to find where the .db file is stored. The simplest way is to search through the entire filesystem starting at /. It can be slow but it works.

find / -name OmbiExternal.db

Then you can download the zip file of the sqlite3 binary, expand the archive, and change into the new directory like so:

cd ~
wget https://www.sqlite.org/2019/sqlite-tools-linux-x86-3300100.zip
unzip sqlite-tools-linux-x86-3300100.zip
cd sqlite-tools-linux-x86-3300100

You need to tell the computer it's allowed to run the binary file, not just look at its contents

chmod a+x sqlite3

Now you should be able to run the query, making sure to replace the path with the correct one from the find earlier

sqlite3 /your/path/here/OmbiExternal.db 'ALTER TABLE PlexServerContent ADD COLUMN RequestId INTEGER NULL'

Here it is all in one block (theoretically). I would always be careful copying and pasting stuff like this from the internet, if you don't know what it does.

cd ~
wget https://www.sqlite.org/2019/sqlite-tools-linux-x86-3300100.zip
unzip sqlite-tools-linux-x86-3300100.zip
cd sqlite-tools-linux-x86-3300100
chmod a+x sqlite3
./sqlite3 $(find / -name OmbiExternal.db -print0 -quit 2>/dev/null) 'ALTER TABLE PlexServerContent ADD COLUMN RequestId INTEGER NULL'
elynch303 commented 4 years ago

still seeing this issue on

3.0.4890

sienar1 commented 4 years ago

Was seeing the issue on 3.0.4892, but sqlite3 commands posted above corrected the problem for me

elynch303 commented 4 years ago

Was seeing the issue on 3.0.4892, but sqlite3 commands posted above corrected the problem for me

I tried that I'm getting Error: attempt to write a readonly database

sienar1 commented 4 years ago

stop the ombi service, and use sudo when running the sqlite3 command

elynch303 commented 4 years ago

stop the ombi service, and use sudo when running the sqlite3 command

fun i was thinking maybe the service was locking it thank you this worked

FenixVale commented 4 years ago

For those not using docker

sudo apt-get update && sudo apt install sqlite3
cd /etc/Ombi
sudo sqlite3 OmbiExternal.db
ALTER TABLE PlexServerContent ADD COLUMN RequestId INTEGER NULL;
(Ctrl A+D close Sqlite3)
sudo systemctl restart ombi

This should resolve it for you.

/etc/Ombi assumes default install location.

Glynnryan commented 4 years ago

For those not using docker

sudo apt-get update && sudo apt install sqlite3
cd /etc/Ombi
sudo sqlite3 OmbiExternal.db
ALTER TABLE PlexServerContent ADD COLUMN RequestId INTEGER NULL;
(Ctrl A+D close Sqlite3)
sudo systemctl restart ombi

This should resolve it for you.

/etc/Ombi assumes default install location.

I've tried this and still have the same issue - movie search doesn't work, or movie suggestions. Version | 3.0.4892

sienar1 commented 4 years ago

I've tried this and still have the same issue - movie search doesn't work, or movie suggestions. Version | 3.0.4892

Are you getting any errors running the commands?

masterzxz commented 4 years ago

I had this problem also and fixed it by running the previously recommended SQL query against OmbiExternal.db

ALTER TABLE PlexServerContent ADD COLUMN RequestId INTEGER NULL;

I didn't want to install stuff into my container so I just used the zip version (no install needed on your desktop either) of this SQLite browser/editor. I stopped my Ombi container, opened the OmbiExternal.db with the SQLite editor program, ran the query above, verified it had added the column into the proper table, saved it, and then started the Ombi container back up again. Everything looks like it working again with movies and TV posters showing up, as well as the "no such columns" error now no longer showing up in the logs.

Thx mate, managed to resolve my issue with your steps.

devi59 commented 4 years ago

Here is a oneliner to fix the issue, assuming you are running in a docker container, your container has ombi in the name, your image requires the config dir to be mounted at /config, and the host is running Debian, Ubuntu, or a related distro that uses apt. If any of these points aren't true, see the details below the command and modify to your needs.

sudo apt update; \
sudo apt install -y sqlite3; \
sqlite3 $( \
  docker inspect --format '{{ range .Mounts }}{{if eq .Destination "/config"}}{{ .Source }}{{end}}{{end}}'  \
  $(docker ps --filter name=ombi --format '{{.ID}}') \
)/app/OmbiExternal.db 'ALTER TABLE PlexServerContent ADD COLUMN RequestId INTEGER NULL'

Explanation of parts:

Update apt & install sqlite3

sudo apt update; \
sudo apt install -y sqlite3;

Inspect container $CONTAINER_ID, list mounts, and if the mount destination is /config, print the source

docker inspect --format \
  '{{ range .Mounts }}{{if eq .Destination "/config"}}{{ .Source }}{{end}}{{end}}'  \
  $CONTAINER_ID

List containers, filtering on ombi. Format output to only include the container id.

docker ps --filter name=ombi --format '{{.ID}}'

Concatenate the inspected directory path with the path to the .db file within the /config dir

$( ... )/app/OmbiExternal.db

Tell sqlite3 to run the actual query

 sqlite3 /opt/ombi/app/OmbiExternal.db 'ALTER TABLE PlexServerContent ADD COLUMN RequestId INTEGER NULL'

After you are done, you can remove sqlite3

sudo apt remove --purge sqlite3

This worked beautifully!

requiem240sx commented 4 years ago

I'm on CentOS running Docker Ombi Version: 3.0.4892 (I simply upgraded to this a week ago or so, and Users started saying there was issues... finally looked at the logs and found some errors that led me to there.

FYI I spun up a brand new container, and it works fine... but didn't want to re-configure everything.... so was very happy to see some solutions posted here.

Did as everyone else said prior....

yum update -y
yum install libsqlite3x-devel.x86_64 -y
cd ombi/config
docker stop ombi
sqlite3 OmbiExternal.db 'ALTER TABLE PlexServerContent ADD COLUMN RequestId INTEGER NULL'
sudo yum remove libsqlite3x-devel.x86_64 -y

AND IT WORKED! So happy I don't have to re-configure Ombi, thank you everyone!

Combatchuck commented 4 years ago

SQL command didn't fix for me. I just had to rebuild as a new docker container, then replace the ombi.settings, and ombi.db after it came up.

tidusjar commented 4 years ago

FYI if you dont want to run the script, just delete the OmbiExternal.db and then restart Ombi.

soulvoid86 commented 4 years ago

FYI if you dont want to run the script, just delete the OmbiExternal.db and then restart Ombi.

This work for me on #3286 Thanks!

dr0id123 commented 4 years ago

FYI if you dont want to run the script, just delete the OmbiExternal.db and then restart Ombi.

This works. After restarting docker, simply manually run the cacher/scan against Plex/Emby,

Glynnryan commented 4 years ago

FYI if you dont want to run the script, just delete the OmbiExternal.db and then restart Ombi.

Worked for me, thank you!

safnz commented 4 years ago

FYI if you dont want to run the script, just delete the OmbiExternal.db and then restart Ombi.

+1, worked here too. Thanks!

sidscri commented 4 years ago

Hey guys and gals. I had the same problem after upgrading from v3.0.4817 to latest release and dev. As a test I reverted back to 4817nit worked again. I upgraded to the next upgrade v3.0.4887, the issue came up again. So something is up with the newer versions. Please help by fixing the issues. I will also try deleting the ombiexternal.db then restart to see if that fixes the issue for now.

sidscri commented 4 years ago

Ok deleting worked. I do have a question though. What am i missing without ombiexternal.db present? does it eventually repopulate the file when it is required?

henroFall commented 4 years ago

I'm on CentOS running Docker Ombi Version: 3.0.4892 (I simply upgraded to this a week ago or so, and Users started saying there was issues... finally looked at the logs and found some errors that led me to there.

FYI I spun up a brand new container, and it works fine... but didn't want to re-configure everything.... so was very happy to see some solutions posted here.

Did as everyone else said prior....

yum update -y
yum install libsqlite3x-devel.x86_64 -y
cd ombi/config
docker stop ombi
sqlite3 OmbiExternal.db 'ALTER TABLE PlexServerContent ADD COLUMN RequestId INTEGER NULL'
sudo yum remove libsqlite3x-devel.x86_64 -y

AND IT WORKED! So happy I don't have to re-configure Ombi, thank you everyone!

Confirmed, worked. For those without docker installs, just change to /etc/Ombi (or wherever your "Storage path" shows as at the /Settings/About page) then do :

sudo sqlite3 OmbiExternal.db 'ALTER TABLE PlexServerContent ADD COLUMN RequestId INTEGER NULL'

rutskiuk commented 4 years ago

How do I do this for Windows using DB Browser for SQLite?

rutskiuk commented 4 years ago

I may have answered this for myself:

  1. Open OmbiExternal.db in DB Browser for SQLite
  2. Make the changes detailed above (go to the PlexServerContent table, modify table, Add field, RequestId, select the type as INTEGER and leave the NN (null) field unticked)
  3. Export the database to a SQL file (File >Export > Database to SQL file > Select Name > OK)
  4. Import the SQL file (File > Import > Database from SQL file > Select the modified SQL file you saved earlier
  5. Save a new database in the same location as OmbiExternal.db and call it what you like
  6. Replace the OmbiExternal.db with your new file (I tend to give the new file the old file's name add an x to the old file name just in case)
  7. Restart Ombi

I hope that helps someone

JRussell commented 4 years ago

I may have answered this for myself:

1. Open OmbiExternal.db in DB Browser for SQLite

2. Make the changes detailed above (go to the PlexServerContent table, modify table, Add field, RequestId, select the type as INTEGER and leave the NN (null) field unticked)

3. Export the database to a SQL file (File >Export > Database to SQL file > Select Name > OK)

4. Import the SQL file (File > Import > Database from SQL file > Select the modified SQL file you saved earlier

5. Save a new database in the same location as OmbiExternal.db and call it what you like

6. Replace the OmbiExternal.db with your new file (I tend to give the new file the old file's name add an x to the old file name just in case)

7. Restart Ombi

I hope that helps someone

I did this but skipped steps 3-5. Not sure why you export/import. Is there a reason I'm missing for those steps? As soon as I added the field it was good to go and I just copied it back to the docker volume.

skettydog commented 4 years ago

This is still an issue on a brand new install. I'm experiencing this on a brand new install on v3.0.4892. I'm getting the same error as everyone else: 'no such column: x.RequestId.'

Also this error for TotalSeasons & RequestByAlias.

Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 1: 'no such column: x.TotalSeasons'.,

Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 1: 'no such column: x.RequestedByAlias'.,

Tripwyr commented 4 years ago

I am having the same issue. Adding x.RequestId eliminates that error, but I still get 'no such column: x.TotalSeasons' and 'no such column: x.RequestedByAlias'. TV search works fine, Movie search, Movie Requests, and TV Requests are all broken.

Deleting OmbiExternal.db then reverting to v3.0.4817 has resolved the issue for now. linuxserver/ombi:v3.0.4817-ls38 for those running from linuxserver.

jneljeff commented 4 years ago

Same issue on a fresh install running 4892. In addition, movie requests are not being sent to radarr. Nothing appears in the logs from these actions.

Edit: Reverting to 4817 as @Tripwyr suggested resolves the issue.

ronso21 commented 4 years ago

Same issue on latest develop build 3.0.4958

alexwitherspoon commented 4 years ago

I can confirm a fresh install of 4892 had the symptom of Radarr/Movies not searching/responding. Deleting "OmbiExternal.db" and restarting Ombi then resumed expected functionality. Below was the observed error I saw repeated many times in the logs. Happy to diagnose more if I could be pointed in a direction.

2020-01-13 22:41:32.797 +00:00 [Error] Something bad happened, ErrorMiddleware caught this
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 1: 'no such column: x.RequestId'.
   at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
   at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements(Stopwatch timer)+MoveNext()
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteAsync(IRelationalConnection connection, DbCommandMethod executeMethod, IReadOnlyDictionary`2 parameterValues, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.AsyncQueryingEnumerable`1.AsyncEnumerator.BufferlessMoveNext(DbContext _, Boolean buffer, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.AsyncQueryingEnumerable`1.AsyncEnumerator.MoveNext(CancellationToken cancellationToken)
   at System.Linq.AsyncEnumerable.FirstOrDefault_[TSource](IAsyncEnumerable`1 source, CancellationToken cancellationToken) in D:\a\1\s\Ix.NET\Source\System.Interactive.Async\First.cs:line 144
   at Microsoft.EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider.TaskResultAsyncEnumerable`1.Enumerator.MoveNext(CancellationToken cancellationToken)
   at System.Linq.AsyncEnumerable.SelectEnumerableAsyncIterator`2.MoveNextCore(CancellationToken cancellationToken) in D:\a\1\s\Ix.NET\Source\System.Interactive.Async\Select.cs:line 106
   at System.Linq.AsyncEnumerable.AsyncIterator`1.MoveNext(CancellationToken cancellationToken) in D:\a\1\s\Ix.NET\Source\System.Interactive.Async\AsyncIterator.cs:line 98
   at Microsoft.EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider.ExceptionInterceptor`1.EnumeratorExceptionInterceptor.MoveNext(CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.ExecuteSingletonAsyncQuery[TResult](QueryContext queryContext, Func`2 compiledQuery, IDiagnosticsLogger`1 logger, Type contextType)
   at Ombi.Store.Repository.PlexServerContentRepository.Get(String providerId) in C:\projects\requestplex\src\Ombi.Store\Repository\PlexContentRepository.cs:line 66
   at Ombi.Core.Rule.Rules.Search.PlexAvailabilityRule.Execute(SearchViewModel obj) in C:\projects\requestplex\src\Ombi.Core\Rule\Rules\Search\PlexAvailabilityRule.cs:line 31
   at Ombi.Core.Rule.RuleEvaluator.StartSearchRules(SearchViewModel obj) in C:\projects\requestplex\src\Ombi.Core\Rule\RuleEvaluator.cs:line 54
   at Ombi.Core.Engine.Interfaces.BaseEngine.RunSearchRules(SearchViewModel model) in C:\projects\requestplex\src\Ombi.Core\Engine\Interfaces\BaseEngine.cs:line 53
   at Ombi.Core.Engine.TvSearchEngine.ProcessResult(SearchTvShowViewModel item) in C:\projects\requestplex\src\Ombi.Core\Engine\TvSearchEngine.cs:line 171
   at Ombi.Core.Engine.TvSearchEngine.GetShowInformation(Int32 tvdbid) in C:\projects\requestplex\src\Ombi.Core\Engine\TvSearchEngine.cs:line 120
   at Ombi.Controllers.SearchController.GetShowInfo(Int32 tvdbId) in C:\projects\requestplex\src\Ombi\Controllers\SearchController.cs:line 274
   at lambda_method(Closure , Object )
   at Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
   at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIIndexMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext)
   at Ombi.ApiKeyMiddlewear.Invoke(HttpContext context) in C:\projects\requestplex\src\Ombi\Middleware\ApiKeyMiddlewear.cs:line 51
   at Ombi.ErrorHandlingMiddleware.Invoke(HttpContext context) in C:\projects\requestplex\src\Ombi\Middleware\ErrorHandlingMiddlewear.cs:line 24
vanderby commented 4 years ago

@tidusjar It appears the EF migrations are not running after upgrading or they are purposefully being skipped in favour of the SQLite Initial script which has an issue with CreateTable vs alterTable for upgrade (see my last paragraph below). I am using SQLite.

Looking at the Ombi.db __EFMigrationsHistory table the last few entries I have are: 20180928201334_Votes 2.1.3-rtm-32065 20181204084915_RequestQueue 2.1.3-rtm-32065 20191102235658_Inital 2.2.6-servicing-10079

In the source code I see there are these migration files that didn't get applied: \src\Ombi.Store\Migrations\20190104203305_LanguageCode.Designer.cs \src\Ombi.Store\Migrations\20190116212601_RequestedByAlias.Designer.cs \src\Ombi.Store\Migrations\20190216224539_Roles.Designer.cs \src\Ombi.Store\Migrations\20190216231519_TvRequestsTotalSeasons.Designer.cs \src\Ombi.Store\Migrations\20191016203035_RequestIdOnPlexContent.Designer.cs

These migrations add the columns that are called out in the error messages.

The 20191102235658_Inital 2.2.6-servicing-10079 has create table calls with the appropriate columns for SQLite, but since the tables already exist from a previous installation I suspect they don't modify an existing table. If we're upgrading from a previous installation we would want to use the AlterTable() call instead of CreateTable().

fireheadman commented 4 years ago

same issue... new install. Took maybe 3 days for this to get into this condition. Tried remediation by deleting the OmbiExternal.db (stopped app first, then started after removal). THe DB recreated itself, but still nothing showing in the Movies. Does work for TV Shows.

image

DO see lots of errors in the Logs dir. (log-20200126.txt).

Also... I had to delete the DB because of this issue: fireheadman@ombi:/etc/Ombi$ sudo sqlite3 OmbiExternal.db 'ALTER TABLE PlexServerContent ADD COLUMN RequestId INTEGER NULL' Error: duplicate column name: RequestId

Additional info when running in foreground:

fireheadman@ombi:/opt/Ombi$ sudo -u ombi ./Ombi --host http://*:5000 --storage /etc/Ombi
Hello, welcome to Ombi
Valid options are:
Ombi 3.0.4892-master
Copyright (C) 2020 Ombi

  --host       (Default: http://*:5000) Set to a semicolon-separated (;) list
               of URL prefixes to which the server should respond. For example,
               http://localhost:123. Use "*" to indicate that the server should
               listen for requests on any IP address or hostname using the
               specified port and protocol (for example, http://*:5000). The
               protocol (http:// or https://) must be included with each URL.
               Supported formats vary between servers.

  --storage    Storage path, where we save the logs and database

  --baseurl    The base URL for reverse proxy scenarios

  --demo       Demo mode, you will never need to use this, fuck that fruit
               company...

  --help       Display this help screen.

  --version    Display version information.

We are running on
/opt/Ombi
Hosting environment: Production
Content root path: /opt/Ombi
Now listening on: http://[::]:5000
Application started. Press Ctrl+C to shut down.
fail: Ombi.Api.Api[1000]
      StatusCode: ServiceUnavailable, Reason: Service Unavailable, RequestUri: http://api.themoviedb.org/3/discover/movie?api_key=b8eabaf5608b88d0298aa189dd90bf00&language=en&sort_by=popularity.desc&include_adult=false
fail: Ombi.ErrorHandlingMiddleware[0]
      Something bad happened, ErrorMiddleware caught this
Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing value: <. Path '', line 0, position 0.
   at Newtonsoft.Json.JsonTextReader.ParseValue()
   at Newtonsoft.Json.JsonReader.ReadForType(JsonContract contract, Boolean hasConverter)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
   at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
   at Ombi.Api.Api.Request[T](Request request) in C:\projects\requestplex\src\Ombi.Api\Api.cs:line 78
   at Ombi.Api.FanartTv.FanartTvApi.GetTvImages(Int32 tvdbId, String token) in C:\projects\requestplex\src\Ombi.Api.FanartTv\FanartTvApi.cs:line 27
   at Ombi.Controllers.ImagesController.GetTvBanner(Int32 tvdbid) in C:\projects\requestplex\src\Ombi\Controllers\ImagesController.cs:line 45
   at lambda_method(Closure , Object )
   at Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
   at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIIndexMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext)
   at Ombi.ApiKeyMiddlewear.Invoke(HttpContext context) in C:\projects\requestplex\src\Ombi\Middleware\ApiKeyMiddlewear.cs:line 51
   at Ombi.ErrorHandlingMiddleware.Invoke(HttpContext context) in C:\projects\requestplex\src\Ombi\Middleware\ErrorHandlingMiddlewear.cs:line 24
fail: Ombi.ErrorHandlingMiddleware[0]
      Something bad happened, ErrorMiddleware caught this
Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing value: <. Path '', line 0, position 0.
   at Newtonsoft.Json.JsonTextReader.ParseValue()
   at Newtonsoft.Json.JsonReader.ReadForType(JsonContract contract, Boolean hasConverter)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
   at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
   at Ombi.Api.Api.Request[T](Request request) in C:\projects\requestplex\src\Ombi.Api\Api.cs:line 78
   at Ombi.Api.FanartTv.FanartTvApi.GetTvImages(Int32 tvdbId, String token) in C:\projects\requestplex\src\Ombi.Api.FanartTv\FanartTvApi.cs:line 27
   at Ombi.Controllers.ImagesController.GetTvBanner(Int32 tvdbid) in C:\projects\requestplex\src\Ombi\Controllers\ImagesController.cs:line 45
   at lambda_method(Closure , Object )
   at Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
   at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIIndexMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext)
   at Ombi.ApiKeyMiddlewear.Invoke(HttpContext context) in C:\projects\requestplex\src\Ombi\Middleware\ApiKeyMiddlewear.cs:line 51
   at Ombi.ErrorHandlingMiddleware.Invoke(HttpContext context) in C:\projects\requestplex\src\Ombi\Middleware\ErrorHandlingMiddlewear.cs:line 24
fail: Ombi.ErrorHandlingMiddleware[0]
      Something bad happened, ErrorMiddleware caught this
Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing value: <. Path '', line 0, position 0.
   at Newtonsoft.Json.JsonTextReader.ParseValue()
   at Newtonsoft.Json.JsonReader.ReadForType(JsonContract contract, Boolean hasConverter)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
   at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
   at Ombi.Api.Api.Request[T](Request request) in C:\projects\requestplex\src\Ombi.Api\Api.cs:line 78
   at Ombi.Api.TheMovieDb.TheMovieDbApi.PopularMovies(String langCode) in C:\projects\requestplex\src\Ombi.TheMovieDbApi\TheMovieDbApi.cs:line 148
   at Ombi.Core.Engine.MovieSearchEngine.<PopularMovies>b__15_0() in C:\projects\requestplex\src\Ombi.Core\Engine\MovieSearchEngine.cs:line 123
   at Ombi.Helpers.CacheService.GetOrAdd[T](String cacheKey, Func`1 factory, DateTime absoluteExpiration)
   at Ombi.Core.Engine.MovieSearchEngine.PopularMovies() in C:\projects\requestplex\src\Ombi.Core\Engine\MovieSearchEngine.cs:line 120
   at Ombi.Controllers.SearchController.Popular() in C:\projects\requestplex\src\Ombi\Controllers\SearchController.cs:line 194
   at lambda_method(Closure , Object )
   at Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
   at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIIndexMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext)
   at Ombi.ApiKeyMiddlewear.Invoke(HttpContext context) in C:\projects\requestplex\src\Ombi\Middleware\ApiKeyMiddlewear.cs:line 51
   at Ombi.ErrorHandlingMiddleware.Invoke(HttpContext context) in C:\projects\requestplex\src\Ombi\Middleware\ErrorHandlingMiddlewear.cs:line 24
fail: Ombi.ErrorHandlingMiddleware[0]
      Something bad happened, ErrorMiddleware caught this
Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing value: <. Path '', line 0, position 0.
   at Newtonsoft.Json.JsonTextReader.ParseValue()
   at Newtonsoft.Json.JsonReader.ReadForType(JsonContract contract, Boolean hasConverter)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
   at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
   at Ombi.Api.Api.Request[T](Request request) in C:\projects\requestplex\src\Ombi.Api\Api.cs:line 78
   at Ombi.Api.FanartTv.FanartTvApi.GetTvImages(Int32 tvdbId, String token) in C:\projects\requestplex\src\Ombi.Api.FanartTv\FanartTvApi.cs:line 27
   at Ombi.Controllers.ImagesController.GetTvBanner(Int32 tvdbid) in C:\projects\requestplex\src\Ombi\Controllers\ImagesController.cs:line 45
   at lambda_method(Closure , Object )
   at Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
   at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIIndexMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext)
   at Ombi.ApiKeyMiddlewear.Invoke(HttpContext context) in C:\projects\requestplex\src\Ombi\Middleware\ApiKeyMiddlewear.cs:line 51
   at Ombi.ErrorHandlingMiddleware.Invoke(HttpContext context) in C:\projects\requestplex\src\Ombi\Middleware\ErrorHandlingMiddlewear.cs:line 24
fail: Ombi.ErrorHandlingMiddleware[0]
      Something bad happened, ErrorMiddleware caught this
System.Threading.Tasks.TaskCanceledException: The operation was canceled. ---> System.IO.IOException: Authentication failed because the remote party has closed the transport stream.
   at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest)
--- End of stack trace from previous location where exception was thrown ---
   at System.Net.Security.SslState.ThrowIfExceptional()
   at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult)
   at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result)
   at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult)
   at System.Net.Security.SslStream.<>c.<AuthenticateAsClientAsync>b__47_1(IAsyncResult iar)
   at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)
--- End of stack trace from previous location where exception was thrown ---
   at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)
   at System.Threading.Tasks.ValueTask`1.get_Result()
   at System.Net.Http.HttpConnectionPool.CreateConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Threading.Tasks.ValueTask`1.get_Result()
   at System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync(ValueTask`1 creationTask)
   at System.Threading.Tasks.ValueTask`1.get_Result()
   at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
   at Ombi.Api.OmbiHttpClient.SendAsync(HttpRequestMessage request) in C:\projects\requestplex\src\Ombi.Api\OmbiHttpClient.cs:line 61
   at Ombi.Api.Api.Request[T](Request request) in C:\projects\requestplex\src\Ombi.Api\Api.cs:line 38
   at Ombi.Api.FanartTv.FanartTvApi.GetTvImages(Int32 tvdbId, String token) in C:\projects\requestplex\src\Ombi.Api.FanartTv\FanartTvApi.cs:line 27
   at Ombi.Controllers.ImagesController.GetTvBanner(Int32 tvdbid) in C:\projects\requestplex\src\Ombi\Controllers\ImagesController.cs:line 45
   at lambda_method(Closure , Object )
   at Microsoft.AspNetCore.Mvc.Internal.