Licensing
Fire Arrow Server requires a valid license to start and continue running. This page covers how licensing works, how to configure it, and what to expect when a license nears expiration.
Production Licenses
For production and non-production deployments (staging, QA, etc.), you need a license from Evoleen. Contact your Evoleen representative to obtain a license for your deployment.
A license is tied to:
- A deployment ID that identifies your specific deployment
- A runtime environment (production or non-production)
- An expiration date
Configuration
Configure your license in application.yaml under the fire-arrow.license key:
File-Based License
Store the license as a file and reference its path:
fire-arrow:
license:
source: file
path: "/etc/fire-arrow/license.key"
deployment-id: "my-deployment-prod"
runtime-environment: prod
Inline License
Embed the license string directly in configuration (useful for container deployments where mounting files is inconvenient):
fire-arrow:
license:
source: inline
content: "${FIRE_ARROW_LICENSE_CONTENT}"
deployment-id: "my-deployment-prod"
runtime-environment: prod
Configuration Properties
| Property | Description | Values |
|---|---|---|
source | How the license is provided | file or inline |
path | Path to the license file | File path (when source: file) |
content | License string | License content (when source: inline) |
deployment-id | Identifies this deployment | String matching your license |
runtime-environment | Deployment tier | prod or nonprod |
Environment Variable Overrides
All license properties can be set via environment variables, which is the recommended approach for production:
| YAML Path | Environment Variable |
|---|---|
fire-arrow.license.source | FIRE_ARROW_LICENSE_SOURCE |
fire-arrow.license.path | FIRE_ARROW_LICENSE_PATH |
fire-arrow.license.content | FIRE_ARROW_LICENSE_CONTENT |
fire-arrow.license.deployment-id | FIRE_ARROW_LICENSE_DEPLOYMENT_ID |
fire-arrow.license.runtime-environment | FIRE_ARROW_LICENSE_RUNTIME_ENVIRONMENT |
Example Docker deployment:
docker run -d \
-e FIRE_ARROW_LICENSE_SOURCE=inline \
-e FIRE_ARROW_LICENSE_CONTENT="your-license-string" \
-e FIRE_ARROW_LICENSE_DEPLOYMENT_ID="my-deployment-prod" \
-e FIRE_ARROW_LICENSE_RUNTIME_ENVIRONMENT=prod \
fire-arrow-server:latest
License Expiration
Fire Arrow Server monitors the license continuously. When the license expires:
- The server enters a 5-minute drain period -- existing in-flight requests are allowed to complete, but new requests receive an error response
- After the drain period, the server shuts down gracefully
This ensures no abrupt interruption to active operations while preventing continued use without a valid license.
Monitor your license expiration date and renew before it expires. The server's readiness probe includes a license health check, so your monitoring system can alert you when the license is nearing expiration.
Health Checks
License status is included in the server's readiness probe at /actuator/health:
curl http://localhost:8080/actuator/health
When the license is valid, the health check includes:
{
"status": "UP",
"components": {
"license": {
"status": "UP"
}
}
}
If the license is expired or missing, the readiness probe reports DOWN, which causes orchestrators like Kubernetes to stop routing traffic to the instance.
Renewing a License
File-Based License
Replace the license file at the configured path. Fire Arrow Server detects the change and loads the new license without requiring a restart.
Inline License
Update the license content in your configuration or environment variable and restart the server.
Troubleshooting
| Symptom | Likely Cause | Resolution |
|---|---|---|
| Server fails to start with license error | Missing or invalid license configuration | Verify source, path/content, and deployment-id |
| Server starts but shuts down after 5 minutes | Expired license | Obtain a renewed license from Evoleen |
Readiness probe reports DOWN for license | License approaching or past expiration | Check expiration date and renew |
deployment-id mismatch error | Configuration doesn't match the issued license | Ensure deployment-id matches exactly |