Severity: High Component: Journey Service Description: Our operations team has reported intermittent data loss in the Journey Service. During peak traffic windows, when multiple updates occur simultaneously for the same journey, some segment status changes appear to be lost.
The current hypothesis is that we have a concurrency issue in how we handle journey updates, but we need a senior engineer to investigate, confirm the root cause, and implement a robust solution.
As a Principal Engineer, your task is to take ownership of this problem space:
- Investigate & Diagnose: Analyze the codebase to identify the root cause of the data loss.
- Architectural Analysis: Produce a technical document that:
- Explains the root cause.
- Proposes multiple potential solutions with a trade-off analysis (complexity, performance, reliability).
- Recommends a path forward for production.
- Outlines how you would monitor and prevent this in the future.
- Implementation: Implement your recommended fix to resolve the issue.
Note: We care deeply about how you think. We want to see how you approach complex distributed system problems, how you evaluate architectural trade-offs, and how you communicate your decisions.
1. Fork & Clone: Fork this repository and clone it to your local machine.
2. Environment Setup: The service uses Redis. You can start it via Docker:
docker run -d -p 6379:6379 --name redis-flyrtech redis:latest3. Exploration: The codebase is a .NET 8 solution with Clean Architecture.
FlyrTech.Api: The entry point.FlyrTech.Infrastructure: Service implementations.FlyrTech.Core: Domain definitions.FlyrTech.Tests: Unit and integration tests.
We have a test suite that might help reproduce the reported issue. Look for JourneyRaceConditionTests.cs.
Please submit a link to your forked repository containing:
- Analysis Document: A markdown file (e.g.,
ANALYSIS.md) covering your diagnosis, design proposals, and recommendations. - Code Implementation: The fix for the issue.
- Tests: Any additional tests you added to verify your solution.
- .NET 8 SDK
- Redis (Local or Docker)
dotnet build FlyrTech.sln
dotnet testThe API connects to Redis on localhost:6379 by default. Configuration is in appsettings.json.
MIT