Difference between revisions of "Template:Troubleshooting"

From Servarr
Line 206: Line 206:
 
==== Download folder and library folder not different folders ====
 
==== Download folder and library folder not different folders ====
  
The download client should download into a temporary folder and {{{ARRNAME}}} should import from that into your Library folder.
+
The download client should download into a folder accessible by {{{ARRNAME}}} and that is not your root/library folder; {{{ARRNAME}}} should import from that separate download folder into your Library folder.
  
You should never download directly into your root folder nor use your root folder as the download client's completed folder.
+
You should never download directly into your root folder.  You also should not use your root folder as the download client's completed folder or incomplete folder.
  
 
If you download right into your library folder, you’ll end up with multiple copies of your media and when there are import issues, which there will be, you may not notice because your media server will see the download client copy.  
 
If you download right into your library folder, you’ll end up with multiple copies of your media and when there are import issues, which there will be, you may not notice because your media server will see the download client copy.  

Revision as of 23:34, 8 May 2021

This template is utilized for general troubleshooting steps that span across all the ARRs. Some Sections may be transcluded from a Troubleshooting Misc page when items are ARR specific.

Template parameters

ParameterDescriptionTypeStatus
ARRNAMEARRNAME

Name of the Application

Example
Radarr
Stringrequired
ARR_DISCORDARR_DISCORD

Link to the ARR #support Discord

URLrequired
ARR_WEBSITEARR_WEBSITE

Link to the ARR Website

URLrequired
ARR_LATEST_RELEASEARR_LATEST_RELEASE

Link to the ARR Download

URLrequired
VERSIONVERSION

The current version of each of the ARRs

Stringrequired
MEDIAMEDIA

What type of media does the ARR use

Example
Radarr: movies, Sonarr: series, Lidarr: artist, Readarr: author
Stringrequired
SEARCHSOURCESEARCHSOURCE

What metadata provider does the ARR use

Example
Radarr: TMDb, Sonarr: TheTVDb, Lidarr: MusicBrainz, Readarr: GoodReads
Stringrequired
QUERYSTRINGQUERYSTRING

no description

Unknownoptional
ARRNAME2ARRNAME2

This string is used for lower cased ARR names for transclusion

Example
radarr, sonarr, lidarr, readarr
Stringrequired

Troubleshooting


Please note that this information is only for {{{ARRNAME}}} {{{VERSION}}}.

Asking for Help


Do you need help? That's okay, everyone needs help sometimes. You can get real time help via chat on [{{{ARR_DISCORD}}} Discord] or Reddit.

But before you go there and post, be sure your request for help is the best it can be. Clearly describe the problem and briefly describe your setup, including things like your OS/distribution, version of Mono or .Net/.Netcore, version of {{{ARRNAME}}}, download client and its version. If you are using Docker please run through the Docker Guide first as that will solve common and frequent path/permissions issues. Otherwise please have a docker compose handy Tell us about what you've tried already, what you've looked at. Use the Logging and Log Files to turn your logging up to trace, recreate the issue, pastebin the relevant context and include a link to it in your post. Maybe even include some screen shots to highlight the issue.

The more we know, the easier it is to help you.

Logging and Log Files

If you're linked here for support remember to get them the information from the actual trace log file, put the logs in a pastebin and show us context around what we need to see. If you're asked for debug logs your logs will contain debug and if you're asked for trace logs your logs will contain trace. If the logs you are providing do not contain either then they are not the logs requested.

What you need to do is:

  1. Turn Logging up to Trace
  2. Clear Logs
  3. Reproduce the Issue
  4. Open the trace log file ({{{ARRNAME}}}.trace.txt) and fine the relevant context
  5. Hastebin, Pastebin, 0bin, or any other pastebin type site a big chunk before the issue, the issue, and a big chunk after the issue.
  • Alternatively If you're looking for a specific entry in an old log file but aren't sure which one you can use N++. You can use the Notepad++ "Find in Files" function to search old log files as needed.
  • Unix Only: Alternatively If you're looking for a specific entry in an old log file but aren't sure which one you can use grep. For example if you want to find information about the movie or show "Shooter" you can run the following command grep -inr -C 100 -e 'Shooter' /path/to/logs/*.trace*.txt If your [[{{{ARRNAME}}} Appdata Directory|Appdata Directory]] is in your home folder then you'd run: grep -inr -C 100 -e 'Shooter' /home/$User/.config/logs/*.trace*.txt
* The flags have the following functions
* -i: ignore case
* -n: show line number
*  -r: recursively check all files in the path
* -C: provide # of lines before and after the line it is found on
* -e: the pattern to search for


Standard Logs Location

The log files are located in {{{ARRNAME}}}'s [[{{{ARRNAME}}} Appdata Directory|Appdata Directory]], inside the logs/ folder. You can also access the log files from the {{{ARRNAME}}} UI at System -> Logs -> Files.

Note: The Logs ("Events") Table in the UI is not the same as the log files and isn't as useful. If you're asked for logs, please copy/paste from the log files and not the table.

Update Logs Location

The update log files are located in {{{ARRNAME}}}'s [[{{{ARRNAME}}} Appdata Directory|Appdata Directory]], inside the UpdateLogs/ folder.

Sharing Logs

The logs can be long and hard to read as part of a forum or Reddit post and they're spammy in [{{{ARR_DISCORD}}} Discord], so please use Pastebin, Hastebin, or any other similar pastebin site . The whole file typically isn't needed, just a good amount of context from before and after the issue/error. Don't forget to wait for spammy tasks like the RSS sync or library refresh to finish.

Trace/Debug Logs

You can change the log level at Settings -> General -> Logging. {{{ARRNAME}}} does not need to restarted for the change to take effect. This change only affects the log files, not the logging database. The latest debug/trace log files are named {{{ARRNAME}}}.debug.txt and {{{ARRNAME}}}r.trace.txt respectively.

If you're unable to access the {{{ARRNAME}}} UI to set the logging level you can do so by editing config.xml in the AppData directory by setting the LogLevel value to Debug or Trace instead of Info.

 <Config>
  ...
  <LogLevel>debug</LogLevel>
  ...
 </Config>

Clearing Logs

You can clear log files and the logs database directly from the UI, under System -> Logs -> Files and System -> Logs -> Delete (Trash Can Icon)

Multiple Log Files

{{{ARRNAME}}} uses rolling log files limited to 1MB each. The current log file is always ,{{{ARRNAME}}}.txt, for the the other files {{{ARRNAME}}}.0.txt is the next newest (the higher the number the older it is). This log file contains fatal, error, warn, and info entries.

When Debug log level is enabled, additional {{{ARRNAME}}}.debug.txt rolling log files will be present. This log files contains fatal, error, warn, info, and debug entries. It usually covers a 40h period.

When Trace log level is enabled, additional {{{ARRNAME}}}.trace.txt rolling log files will be present. This log files contains fatal, error, warn, info, debug, and trace entries. Due to trace verbosity it only covers a couple of hours at most.

Recovering from a Failed Update


Purpose

We do everything we can to prevent issues when upgrading, but they occur, this will walk you through the steps of recovering your installation.

Determine the issue

The best place to look when {{{ARRNAME}}} won't start after an update is your log files, before trying to start {{{ARRNAME}}} again, use [[{{{ARRNAME}}} Settings#Logging|Logging]] and [[{{{ARRNAME}}} System#Log_Files|Log Files]] to find them and increase the log level.

Migration Issue

Migration errors won't be identical, but here is an example:

14-2-4 18:56:49.5|Info|MigrationLogger|*** 36: update_with_quality_converters migrating ***

14-2-4 18:56:49.6|Error|MigrationLogger|SQL logic error or missing database duplicate column name: Items

While Processing: "ALTER TABLE "QualityProfiles" ADD COLUMN "Items" TEXT"

Resolving the issue

In the event of a migration issue there is not much you can do immediately, if the issue is specific to you (or there are not yet any posts), please create a post on our subreddit or swing by our discord, if there are others with the same issue, then rest assured we are working on it.

Manually upgrading

Grab the latest release from [{{{ARR_WEBSITE}}} our website]

Install the update (.exe) or extract (.zip) the contents over your existing installation and re-run {{{ARRNAME}}} as you normally would.

Downloads and Importing

Downloading and importing is where most people experience issues. From a high level perspective, {{{ARRNAME}}} needs to be able to communicate with your download client and have access to the files it downloads. There is a large variety of supported download clients and an even bigger variety of setups. This means that while there are some common setups, there isn’t one right setup and everyone’s setup can be a little different.

The first step is to turn logging up to Trace, see Logging and Log Files for details on adjusting logging and searching logs. You’ll then reproduce the issue and use the trace level logs from that time frame to examine the issue. If someone is helping you, put context from before/after in a pastebin to show them. It doesn’t need to be the whole file and it shouldn’t just be the error. You should also reproduce the issue while tasks that spam the log file aren’t running.

When you reach out for help, be sure to read asking for help so that you can provide us with the details we’ll need.

Testing the Download Client

Ensure your download client(s) are running. Start by testing the download client, if it doesn’t work you’ll be able to see details in the trace level logs. You should find a URL you can put into your browser and see if it works. It could be a connection problem, which could indicate a wrong ip, hostname, port or even a firewall blocking access. It might be obvious, like an authentication problem where you’ve gotten the username, password or apikey wrong.

Testing a Download

Now we’ll try a download, pick a {{{MEDIA}}} and do a manual search. Pick one of those files and attempt to download it. Does it get sent to the download client? Does it end up with the correct category? Does it show up in Activity? Does it end up in the trace level logs during the Check For Finished Download task which runs roughly every minute? Does it get correctly parsed during that task? Does the queued up download have a reasonable name? Since {{{ARRNAME}}} searches by {{{SEARCHSOURCE}}}, on most indexers/trackers, it can queue one up with a name that it can’t recognize.

Testing an Import

Import issues should almost always manifest as an item in Activity with an orange icon you can hover to see the error. If they’re not showing up in Activity, this is the issue you need to focus on first so go back and figure that out. Most import errors are permissions issues, remember that {{{ARRNAME}}} needs to be able to read and write in the download folder. Sometimes, permissions in the library folder can be at fault too, so be sure to check both.

Incorrect path issues are possible too, though less common in normal setups. The key to understanding path issues is knowing that {{{ARRNAME}}} gets the path to the download from the download client, via its API. This becomes a problem in more unique use cases, like the download client running on a different system (maybe even OS!). It can also occur in a Docker setup, when volumes are not done well. A remote path map is a good solution where you don’t have control, like a seedbox setup. On a Docker setup, fixing the paths is a better option.

Common Problems

Download Client's WebUI is not enabled

{{{ARRNAME}}} talks to you download client via it's API and accesses it via the client's webui. You must ensure the client's webui is enabled and the port it is using does not conflict with any other client ports in use or ports in use on your system.

SSL in use and incorrectly configured

Ensure SSL encryption is not turned on if you're using both your {{{ARRNAME}}} instance and your download client on a local network. See [[{{{ARRNAME}}}_FAQ#Invalid Certificate and other HTTPS or SSL issues|the SSL FAQ entry]] for more information.

Can’t see share on Windows

The default user for a Windows service is SYSTEM which typically doesn’t have access to your shares. Edit the service and set it up to run as your own user, see the FAQ entry [[{{{ARRNAME}}} FAQ#Why can’t {{{ARRNAME}}} see my files on a remote server?|why can’t {{{ARRNAME}}} see my files on a remote server]] for details.

Mapped network drives are not reliable

While mapped network drives like X:\ are convenient, they aren’t as reliable as UNC paths like \\server\share and they’re also not available before login. Setup {{{ARRNAME}}} and your download client(s) so that they use UNC paths as needed. If your library is on a share, you’d make sure your root folders are using UNC paths. If your download client sends to a share, that is where you’ll need to configure UNC paths since {{{ARRNAME}}} gets the download path from the download client. It is fine to keep your mapped network drives to use yourself, just don’t use them for automation.

Docker and user, group, ownership, permissions and paths

Docker adds another layer of complexity that is easy to get wrong, but still end up with a setup that functions, but has various problems. Instead of going over them here, read this wiki article for these automation software and Docker which is all about user, group, ownership, permissions and paths. It isn’t specific to any Docker system, instead it goes over things at a high level so that you can implement them in your own environment.

Permissions on the Library Folder

Don’t forget to check permissions and ownership of the destination. It is easy to get fixated on the download’s ownership and permissions and that is usually the cause of permissions related issues, but it could be the destination as well. Check that the destination folder(s) exist. Check that a destination file doesn’t already exist or can’t be deleted or moved to recycle bin. Check that ownership and permissions allow the downloaded file to be copied, hard linked or moved. The user or group that {{{ARRNAME}}} runs as needs to be able to read and write the root folder.


Permissions on the Downloads Folder

Don’t forget to check permissions and ownership of the source. It is easy to get fixated on the destination's ownership and permissions and that is a possible cause of permissions related issues, but it typically is the source. Check that the source folder(s) exist. Check that ownership and permissions allow the downloaded file to be copied/hardlinked or copy+delete/moved. The user or group that {{{ARRNAME}}} runs as needs to be able to read and write the downloads folder.

Download folder and library folder not different folders

The download client should download into a folder accessible by {{{ARRNAME}}} and that is not your root/library folder; {{{ARRNAME}}} should import from that separate download folder into your Library folder.

You should never download directly into your root folder. You also should not use your root folder as the download client's completed folder or incomplete folder.

If you download right into your library folder, you’ll end up with multiple copies of your media and when there are import issues, which there will be, you may not notice because your media server will see the download client copy.

The download folder will also be a hot mess of poorly named folders and files while your library folder will be nice and neat.

This frequently causes other random import issues as well.

Incorrect category

{{{ARRNAME}}} should be setup to use a category so that it only tries to process its own downloads. It is rare that a torrent submitted by {{{ARRNAME}}} gets added without the correct category, but it can happen. If you’re adding torrents manually and want {{{ARRNAME}}} to process them, they’ll need to have the correct category. It can be set at any time, since {{{ARRNAME}}} tries to process downloads every minute.

Packed torrents

If your torrent is packed in .rar files, you’ll need to setup extraction. We recommend unpackerr. One issue to look out for with packed torrents is that the video file will be copied or hard linked like normal, but it isn’t needed since the .rar files are seeding. That means if you’re using a copy setup, the torrent will be consuming double the space. And if you’re using a hard link setup, your torrent folder will be a little messier because of the unneeded file. This can be mitigated with a cleanup script.

Repeated downloads

There are a few causes of repeated downloads, but a recent one is related to the Indexer restriction in Release Profiles. Because the indexer isn’t stored with the data, any preferred word scores are zero for media in your library, but during “RSS” and search, they’ll be applied. This gets you into a loop where you download the items again and again because it looks like an upgrade, then isn’t, then shows up again and looks like an upgrade, then isn’t. Don’t restrict your release profile to an indexer.

Usenet download misses import

{{{ARRNAME}}} only looks at the 60 most recent downloads in SABnzbd and NZBGet, so if you keep your history this means that during large queues with import issues, downloads can be silently missed and not imported. The best way to avoid that is to keep your history clear, so that any items that still appear need investigating. You can achieve this by enabling Remove under Completed and Failed Download Handler. In nzbget, this will move items to the hidden history which is great. Unfortunately, sabnzbd does not have a similar feature. The best you can achieve there is to use the nzb backup folder.

Download client clearing items

The download client should not be responsible for removing downloads. Usenet clients should be configured so they don’t remove downloads from history. Torrent clients should be setup so they don’t remove torrents when they’re finished seeding (pause or stop instead). This is because {{{ARRNAME}}} communicates with the download client to know what to import, so if they’re removed there is nothing to be imported… even if there is a folder full of files.

Problem Not Listed

Please discuss with the support team on discord. If this is something that may be a common problem, please suggest adding it to the wiki.

Searches Indexers and Trackers

Turn logging up to trace

The first step is to turn logging up to Trace, see Logging and Log Files for details on adjusting logging and searching logs. You’ll then reproduce the issue and use the trace level logs from that time frame to examine the issue. If someone is helping you, put context from before/after in a pastebin to show them. It doesn’t need to be the whole file and it shouldn’t just be the error. You should also reproduce the issue while tasks that spam the log file aren’t running.

Testing an Indexer or Tracker

When you test an indexer or tracker, in debug or trace logs you can find the URL used. An example of a successful test is below, you can see it query the indexer via a specific URL with specific parameters and then the response. You test this url in your browser like {{{QUERYSTRING}}} replacing the apikey=(removed) with the correct apikey like apikey=123. You can experiment with the parameters if you’re getting an error from the indexer or see if you have connectivity issues if it doesn’t even work. After you’ve tested in your own browser, you should test from the system {{{ARRNAME}}} is running on if you haven’t already.


Testing a Search

[[File:{{{ARRNAME}}}-searches-indexers-and-trackers1.png|thumb|none|750px]]

[[File:{{{ARRNAME}}}-searches-indexers-and-trackers2.png|thumb|none|750px]]


Here you can see the full trace log below


Common Problems

Media is Unmonitored

The {{{MEDIA}}} is/are not monitored.

Wrong categories

Incorrect categories is probably the most common cause of results showing in manual searches of an indexer/tracker, but not in {{{ARRNAME}}}. The indexer/tracker should show the category in the search results, which should help you figure out what is missing. If you’re using Jackett, each tracker has a list of specifically supported categories. Make sure you’re using the correct ones for Categories. I find it helpful to have the list visible in one browser window while I edit the entry in {{{ARRNAME}}}.

Wrong results

Sometimes indexers will return completely unrelated results, {{{ARRNAME}}} will feed in parameters to limit the search to a {{{SEARCHSOURCE}}}, but the results returned are completely unrelated. Or sometimes, mostly related with a few incorrect results. The first is usually an indexer problem and you’ll be able to tell from the trace logs which is causing it. You can disable that indexer and report the problem. The other is usually categorized releases which should be reportable on the indexer/tracker.

Certificate validation

You’ll be connecting to most indexers/trackers via https, so you’ll need that to work properly on your system. That means your time zone and time both need to be set correctly. It also means your system certificates need to be up to date.

Hitting rate limits

If you run your {{{ARRNAME}}} through a VPN or proxy, you may be competing with 10s or 100s or 1000s of other people all trying to use services like {{{SEARCHSOURCE}}}, theXEM ,and/or your indexers and trackers. Rate limiting and DDOS protection are often done by IP address and your VPN/proxy exit point is one IP address. Unless you’re in a repressive country like China, Australia or South Africa you don’t need to VPN/proxy {{{ARRNAME}}}.

Rarbg has a tendency to have some sort of rate limiting within their API and displays as responding with no results.

Using the Jackett /all endpoint

The Jackett /all endpoint is convenient, but that is its only benefit. Everything else is potential problems, so adding each tracker individually is recommended.

Even Jackett says it should be avoided and should not be used.

Using the all endpoint has no advantages (besides reduced management overhead), only disadvantages:

  • you lose control over indexer specific settings (categories, search modes, etc.)
  • mixing search modes (IMDB, query, etc.) might cause low-quality results
  • indexer specific categories (>= 100000) can't be used.
  • slow indexers will slow down the overall result
  • total results are limited to 1000

Adding each indexer separately It allows for fine tuning of categories on a per indexer basis, which can be a problem with the /all end point if using the wrong category causes errors on some trackers. In {{{ARRNAME}}}, each indexer is limited to 1000 results if pagination is supported or 100 if not, which means as you add more and more trackers to Jackett, you’re more and more likely to clip results. Finally, if one of the trackers in /all returns an error, {{{ARRNAME}}} will disable it and now you don’t get any results.

Problem Not Listed

Please discuss with the support team on discord. If this is something that may be a common problem, please suggest adding it to the wiki.

Errors

These are some of the common errors you may see when adding an indexer

The underlying connection was closed: An unexpected error occurred on a send.

This is caused by the indexer using a SSL protocol not supported by .net 4.5, to resolve this you will need to install .net 4.5, which is available on Vista/Server 2008 and above (if you’re on XP/Server 2003 its time to upgrade).

The request timed out

{{{ARRNAME}}} seems to have issues with certain TLS versions or configurations. If you get the following error messages in your log:

System.Net.WebException: The request timed out: ’https://example.org/api?t=caps&apikey=(removed) —> System.Net.WebException: The request timed out

And you can see the following in the trace log file:

<DATE&TIME>|Trace|FallbackHttpDispatcher|Curl not available, using default WebClient. 

You might fix it by installing libcurl3. On Ubuntu/Debian use;

apt install libcurl3

This can also be caused by:

  • improperly configured or use of a VPN
  • improperly configured or use of a proxy
  • local DNS issues
  • local IPv6 issues