website/src/content/docs/actors/troubleshooting.mdx
Before diving into specific errors, try these general troubleshooting steps:
level=ERROR or level=WARN messages.RIVET_LOG_LEVEL=DEBUG for verbose logging. See Logging for more options.If you're stuck, reach out on Discord or file an issue on GitHub.
When reporting, please include:
See Actor Statuses for more about this status.
The dashboard will show the specific failure reason. Common errors include:
crashedThe actor's run handler threw an unhandled exception or exited unexpectedly. Check your actor logs for the error message and stack trace.
no_capacityNo server was available to run your actor. The cause depends on your runtime mode:
Serverless:
/api/rivet/start and failing, check your backend logs for errors.Runners:
RIVET_TOTAL_SLOTS, default: 100,000). Check the dashboard to see if your runners have available capacity and scale up if needed.runner_no_responseThe server running your actor did not respond in time. This can happen if your server is overloaded or experienced a network issue. Try restarting your server or checking its health.
runner_connection_lostThe server running your actor lost its connection to Rivet. This is usually caused by a network interruption or your server restarting.
runner_draining_timeoutYour server is shutting down and the actor did not finish in time. Consider handling graceful shutdown in your actor or increasing your shutdown timeout.
serverless_http_errorYour serverless endpoint returned an HTTP error. Common causes:
serverless_connection_errorRivet was unable to connect to your serverless endpoint. Check that:
serverless_stream_ended_earlyThe connection to your serverless endpoint was terminated before the actor finished. This usually means your serverless function hit its execution time limit. Ensure that your Rivet provider's request lifespan is configured to match the max duration of your serverless platform.
serverless_invalid_sse_payloadRivet received an unexpected response from your serverless endpoint. This typically means something is intercepting or modifying the request before it reaches your RivetKit handler. Check that:
registry.start(), registry.serve(), or registry.handler() correctly.internal_errorAn unexpected error occurred within Rivet. If this persists, please contact support.
If your actors are being created and then immediately destroyed or crashing, there is likely an error being thrown in your createState or onCreate lifecycle hooks. These hooks run during actor initialization before the actor is marked as ready.
Check your server logs for the error message and stack trace. Common causes include:
createState (e.g. invalid input, failed validation, or a runtime error when computing initial state)onCreate (e.g. a failing external API call, missing configuration, or invalid setup logic)Fix the error in the relevant lifecycle hook and redeploy.
If your actors are still running old code after deploying a new version, your versioning is likely not configured correctly.
Without versioning, Rivet has no way to distinguish old deployments from new ones. The behavior depends on your runtime mode:
To fix this, configure a version number in your registry configuration. When a new version is deployed, Rivet will allocate new actors to the latest version and optionally drain old actors to migrate them.
See Actor Statuses for more about this status.
An actor stays in "pending" status when Rivet is waiting for a server to accept it. The cause depends on your runtime mode:
Serverless:
/api/rivet/start endpoint.Runners: