Troubleshooting
This page is about an instance that is up and answering. A stack that will not come up at all is a different subject, and Startup failures has it: the two failures that never reach the application log, and the five lines that account for most first starts.
| What you see | What it is |
|---|---|
Too many attempts. Try again in … |
The rate limit on the routes that check a secret: ten a minute, per address |
Just refreshed: try again in n seconds |
The two-minute cooldown on a hand-made price refresh |
… is unreachable right now. No value was made up |
An outside price source did not answer; nothing was invented in its place |
The stored key is unreadable |
A provider key sealed under a SECRET_ENCRYPTION_KEY this instance no longer runs on |
Code required, with a correct code |
Same cause, on your two-factor secret |
403 on everything but reading |
You are on the demonstration account |
This file is too large to be sent in one go (25 MB at most) |
An export bigger than the body limit |
Signing in sends you back to signing in
Section titled “Signing in sends you back to signing in”The sign-in answers, the application opens, and the first navigation lands on the sign-in
page again with nothing anywhere saying why. That is COOKIE_SECURE=true meeting a
cleartext address: the browser accepts the cookie on an HTTPS origin and throws it away on
a plain one, localhost excepted. Go through the proxy, or set it to false while there
is no HTTPS in front, as Behind a proxy explains.
One person’s mistyping locks out the house
Section titled “One person’s mistyping locks out the house”The limit above is counted per address, and behind a reverse proxy every request arrives
from the proxy, so the whole household shares one budget of ten. The same reading makes
every session under Settings → Security show the same address. TRUSTED_PROXY_HOPS
gives both the reader back, and Behind a proxy says what number
to put there and why it is a promise rather than a setting.
A price will not move
Section titled “A price will not move”Three different things look alike on a line. A refresh asked for twice waits out a two-minute cooldown and says how long is left. A source that is down is named, and no figure is invented in its place. A quote in another currency is stored and converted by nothing, so no total reads it and the currency is printed beside the line.
A line with no price at all is still a line: it is worth nothing until a price arrives, and the account counts it apart rather than folding a silent zero into a total. Holdings has both controls.
Two things a restored instance cannot open
Section titled “Two things a restored instance cannot open”An instance restored under a different SECRET_ENCRYPTION_KEY holds a provider key and a
two-factor secret it cannot read, and every figure beside them comes back.
Restoring under another key walks out of both.
A restore that stopped halfway
Section titled “A restore that stopped halfway”A restore is not atomic: it writes table after table, so an interrupted one leaves some tables back and some not, with no error page. Import the same file again: every row is matched on a natural key, so what landed is skipped and what did not is written. Restoring an export.
The interface is one build behind
Section titled “The interface is one build behind”After an update a tab that was already open is served by its own service worker, out of cache, and a line at the bottom of the screen offers to reload. Take it: it refreshes the worker first, so what comes back is the new build. Updating an instance says when that offer cannot appear.
If none of this is your symptom, Getting help is where to report it.