Watchlist Troubleshooting
Overview
The Watchlist feature in AlphaSense enables users to organize and monitor companies of interest by creating custom watchlists. Users can add companies individually through autocomplete search or in bulk using ticker imports (supporting ticker symbols, ISIN, CUSIP, SEDOL, and Bloomberg identifiers). Watchlists can be shared with team members within the same company or sent as copies to specific users via email notifications.
The watchlist functionality is primarily served by the graphql-watchlist service, which handles watchlist CRUD operations, company ticker resolution, and integrates with the notification delivery service for sharing capabilities. Watchlists can be applied as filters in search operations and linked to monitoring dashboards for focused company tracking.
Common dependencies involved in watchlist operations include graphql-watchlist, ticker,
notification-delivery-service, user-service, graphql-search.
This document outlines common failure scenarios related to watchlist operations and provides troubleshooting steps for resolution.
Failure Scenarios
Watchlists Not Loading / Not Displaying
Triage:
Users attempt to load their watchlists but see no watchlists displayed. The watchlist dropdown in search filters shows an empty state despite existing watchlists. This indicates watchlist service disruption, GraphQL query failures, or cache synchronization issues.
Common symptoms include:
- Empty watchlist dropdown in filters
- "Failed to load watchlists" error message
Troubleshooting:
Quick Resolution:
Have the user refresh the browser or log out and log back in to check if watchlists start loading. If the issue persists, proceed with service verification.
Verify watchlist services are running:
kubectl get pods -n applications | grep graphql-watchlist
All pods should be in Running state with 1/1 ready containers.
Check pod health and recent events:
kubectl describe pod -n applications -l app=graphql-watchlist
Look for:
- Pod status like CrashLoopBackOff, OOMKilled, or ImagePullBackOff
- Unexpected restarts or recent deployments
- Resource pressure indicators
If pods are failing or stuck, restart the deployment:
kubectl rollout restart deploy/graphql-watchlist -n applications
Check graphql-watchlist service logs for any errors.
kubectl logs -n applications deployment/graphql-watchlist --tail=100
Example error log:
ERROR [graphql-watchlist] Failed to fetch watchlists for user 12345: Database connection timeout after 5000ms
Cannot Add/Remove Companies from Watchlist
Triage:
Users add companies to a watchlist but the companies don't appear, or users attempt to remove companies but they remain visible after the operation. Operations may fail with "Unable to update watchlist" or "Failed to add company" error messages.
This indicates patch mutation failures, company ID resolution issues, ticker service unavailability, or cache synchronization problems.
Troubleshooting:
Check graphql-watchlist service logs for update operations:
kubectl logs -n applications deployment/graphql-watchlist --tail=100
Example error log:
ERROR [graphql-watchlist] Failed to add company to watchlist: Invalid company ID or ticker symbol not found: XYZ123
Verify ticker resolution service is available:
kubectl get pods -n applications -l app=ticker
All ticker service pods should be in Running state.
Check ticker service logs for resolution errors:
kubectl logs -n applications deployment/ticker --tail=100
Common Issues:
Company ID Resolution Failures:
- Invalid ticker format (unsupported symbol)
- Ticker not found in the system
- Ticker service timeout or unavailable
Workaround:
Have the user try adding companies one at a time using the autocomplete search instead of bulk operations. This provides real-time validation and clearer error feedback.
Bulk Import Tickers Fails / Invalid Tickers
Triage:
Users paste multiple tickers in bulk import mode but encounter "INVALID TICKER(S)" error. The validation dialog shows all tickers as invalid, or the import operation fails silently without adding any companies to the watchlist.
This indicates ticker format parsing issues, unsupported identifier types, ticker service unavailability, or validation logic failures.
Troubleshooting:
Supported Ticker Formats:
- Ticker symbol (e.g., AAPL, MSFT)
- ISIN (e.g., US0378331005)
- CUSIP (e.g., 037833100)
- SEDOL (e.g., 2046251)
- Bloomberg ticker (e.g., AAPL US Equity)
NOT Supported:
- Company names (e.g., "Apple Inc.")
- Custom identifiers
- Mixed formats in single entry
Check ticker resolution logs:
kubectl logs -n applications deployment/ticker --tail=100
Example error log:
WARN [graphql-watchlist] Bulk ticker validation failed: 15 of 20 tickers could not be resolved
ERROR [graphql-watchlist] Invalid ticker format: "Apple Inc" - company names not supported
Verify ticker service is operational:
kubectl get pods -n applications -l app=ticker
Check ticker service logs for errors:
kubectl logs -n applications deployment/ticker --tail=100
Workaround:
Have users try:
- Individual ticker mode (autocomplete) instead of bulk import - this provides real-time validation and clearer error messages
- Reducing the number of tickers per bulk import operation (try batches of 10-20 instead of 50+)
- Using standardized ticker formats (ticker symbols or ISINs work best)
Watchlist Create/Update/Delete Operations Failing
Triage:
Users cannot create new watchlists, rename existing watchlists, delete watchlists, or update watchlist properties (such as sharing settings or descriptions). Operations return generic errors like "Something went wrong" or "Failed to save changes", or fail without any user feedback.
Troubleshooting:
Verify watchlist services are running:
kubectl get pods -n applications | grep graphql-watchlist
All pods should be in Running state with 1/1 ready containers.
Check graphql-watchlist service logs for operation details:
kubectl logs -n applications deployment/graphql-watchlist --tail=100
Example error logs:
ERROR [graphql-watchlist] Failed to delete watchlist ID 789: Watchlist has 3 linked saved searches
ERROR [graphql-watchlist] Watchlist creation failed: Name "Q1 2024 Companies" already exists for user 12345
WARN [graphql-watchlist] Update rejected: Watchlist name exceeds 50 character limit
Common Issues:
Delete Failures:
- Watchlist has linked saved searches that prevent deletion
Update Failures:
- Watchlist name already exists for the user
- Watchlist name exceeds 50 character limit
Create Failures:
- Duplicate watchlist name for user
Resolution:
If services are unresponsive, restart the watchlist service:
kubectl rollout restart deployment/graphql-watchlist -n applications
Send Watchlist Copy Feature Not Working
Triage:
Users attempt to send a watchlist copy to team members but the operation fails. Recipients don't receive email notifications, or copied watchlists don't appear in recipient accounts. The send operation may appear to complete successfully but recipients report not receiving the watchlist.
Troubleshooting:
Check graphql-watchlist service logs for copy operations:
kubectl logs -n applications deployment/graphql-watchlist --tail=100
Example error logs:
ERROR [graphql-watchlist] Failed to send watchlist copy: User ID 67890 not found
WARN [graphql-watchlist] Watchlist copy created but notification delivery failed for 2 of 5 recipients
ERROR [graphql-watchlist] Transaction rollback: Failed to create watchlist copies for users [6789, 67891]
Verify notification delivery service is available:
kubectl get pods -n platform-alerts -l app=notification-delivery-service
All notification service pods should be in Running state.
Check notification service logs for watchlist-related notifications:
kubectl logs -n platform-alerts deployment/notification-delivery-service --tail=100
Example error log:
ERROR [notification-delivery-service] Failed to deliver watchlist notification email to user@example.com: SMTP timeout after 30s
WARN [notification-delivery-service] User user@example.com is in suppression list - email not sent
Common Issues:
Recipients Not Found:
- Invalid user IDs provided
- User lookup service unavailable
- Cross-company sharing attempted (only same-company sharing supported)
Email Delivery Failures:
- User is in email suppression list (check using the Alert Tracking app in Retool)
- Email template missing or failed to render
- Recipient email address invalid or bounced previously
Resolution:
For notification service issues, restart the service:
kubectl rollout restart deployment/notification-delivery-service -n platform-alerts