Developer
Priyank Warkhede
priyankw@meta.com
Performance
YoY:+641%Key patterns and highlights from this developer's activity.
Breakdown of growth, maintenance, and fixes effort over time.
Bugs introduced vs. fixed over time.
Reclassifies engineering effort based on bug attribution. Commits that introduced bugs are retrospectively counted as poor investments.
Investment Quality reclassifies engineering effort based on bug attribution data. Commits identified as buggy origins (those that introduced bugs later fixed by someone) have their grow and maintenance time moved into the Wasted Time category. Their waste (fix commits) remains counted as productive. All other commits retain their standard classification: grow is productive, maintenance is maintenance, and waste (fixes) is productive.
The standard model classifies commits as Growth, Maintenance, or Fixes. Investment Quality adds a quality lens: a commit that introduced a bug is retrospectively counted as a poor investment — the engineering time spent on it was wasted because it ultimately required additional fix work. Fix commits (Fixes in the standard model) are reframed as productive, because fixing bugs is valuable work.
Currently computed client-side from commit and bug attribution data. Ideal server-side endpoint:
POST /v1/organizations/{orgId}/investment-quality
Content-Type: application/json
Request:
{
"startTime": "2025-01-01T00:00:00Z",
"endTime": "2025-12-31T23:59:59Z",
"bucketSize": "BUCKET_SIZE_MONTH",
"groupBy": ["repository_id" | "deliverer_email"]
}
Response:
{
"productivePct": 74,
"maintenancePct": 18,
"wastedPct": 8,
"buckets": [
{
"bucketStart": "2025-01-01T00:00:00Z",
"productive": 4.2,
"maintenance": 1.8,
"wasted": 0.6
}
]
}Latest analyzed commits from this developer.
| Hash | Message | Date | Files |
|---|
Commit activity distribution by hour and day of week. Shows when this developer is most active.
Developers who frequently work on the same files and symbols. Higher score means stronger code collaboration.
| Effort |
|---|
| d05af7a0 | This commit introduces a new **gflag `client_id`** within the **FSDB client stress test utility** (`fboss/fsdb/client/test/stress_test_client.cpp`). This **test enhancement** allows for specifying a custom client ID, enabling the creation of multiple distinct subscriber or publisher streams during stress tests. By supporting a mix of subscriber types (e.g., Path, Patch, stats) and varied behaviors (e.g., slow, stuck, repeatedly disconnecting) for functions like `subscribe` and `publishPathImpl`, it significantly improves the ability to simulate complex scenarios. This change enhances the robustness and realism of **FSDB client stress testing**, ensuring better validation of its resilience and performance. | Mar 27 | 1 | maint |
| 31513bb5 | This commit **fixes a crash** in the **FSDB subscriber** that occurred when handling **multi-path delete patches**, specifically when the last subscribed struct in a container was deleted. The **bug fix** addresses an issue within the `thrift_cow`'s `PathVisitor` component, where the `visitNode` function failed to correctly identify and visit the nearest container ancestor for certain delete patch scenarios. By ensuring the container containing the base path is always visited, even when the path ends at a non-container, non-primitive node, this change provides uniform and robust handling for all delete operations. This prevents unexpected crashes and improves the reliability of **FSDB multi-path patch subscriptions**, with new tests added in `FsdbSubManagerTest.cpp` to validate the corrected behavior. | Mar 23 | 2 | maint |
| a352c4a6 | This commit introduces a **new capability** to generate **versioned `RibMap` test data** within the `fboss/thrift_cow/storage/tests` module. Functions in `TestDataFactory.cpp` and `TestDataFactory.h`, such as `getStateUpdate` and `buildBgpData`, are modified to accept version parameters. This allows the **test data generation utilities** to produce varying prefixes and AS paths based on the specified version. The change enhances the flexibility of the testing framework, enabling more comprehensive and robust testing of version-dependent `RibMap` logic. | Mar 23 | 3 | grow |
| f06c2f3f | This commit introduces a **new publisher mode** to the **FSDB client stress test utility**, `stress_test_client.cpp`. This **new feature** allows the client to simulate publishing state or statistics to the FSDB system, with configurable options for the publishing path, data role (e.g., `MaxScale`), and interval. It enhances the testing capabilities by enabling more realistic stress scenarios for FSDB data ingestion, allowing developers to test how FSDB handles various data streams. The build system (`BUCK`) was also updated to support these new functionalities. | Mar 23 | 2 | grow |
| bd76f9bc | This commit **fixes a critical SIGSEGV crash** in the `fboss_sw_agent` that occurred during **graceful exit**. The crash stemmed from a **race condition** where the `TunIntf::handlerReady` callback, running on a separate thread, would attempt to process packets using `SwSwitch` members that had already been deallocated by the main thread during shutdown. To resolve this, an `isExiting()` guard was added to the beginning of `TunIntf::handlerReady`, ensuring that packet processing is **prevented if the switch is shutting down**. This significantly improves the **stability and reliability of the agent's shutdown procedure**, preventing access to invalid memory, and is validated by a new test case in `TunInterfaceTest.cpp`. | Mar 23 | 2 | maint |
| b2e1e60e | This commit **fixes a critical race condition** in the **`TunManager` shutdown process** that could lead to a `SIGSEGV` crash during graceful exit. Previously, `TunManager::stopProcessing()` would unregister event handlers from the main thread without waiting for in-flight `handlerReady` callbacks on the `EventBase` thread, causing them to access already destroyed `SwSwitch` members. The **bug fix** ensures `TunManager::stop()` is executed on the `EventBase` thread via `runImmediatelyOrRunInFbossEventBaseThreadAndWait()`, guaranteeing all pending event processing completes before resource deallocation. This provides **robust and graceful termination** for the FBOSS agent, particularly impacting the **`TunManager` subsystem**'s interaction with the `EventBase`. A new test case in `fboss/agent/test/TunInterfaceTest.cpp` has been added to validate this synchronization. | Mar 23 | 2 | maint |
| f85b3c90 | This commit performs a **cleanup** operation by **removing a legacy annotation** within the `fbcode HybridCow` system. Specifically, it targets the `AllowSkipThriftCow` annotation, which is no longer needed. This **maintenance** task improves code hygiene and reduces technical debt by eliminating obsolete definitions, ensuring the `HybridCow` codebase remains streamlined and easier to maintain. | Mar 17 | 4 | – |
| b0632449 | This commit introduces **new unit tests** for the `SubscribableStorage` component within `fboss/fsdb/oper`. These tests specifically validate the correct behavior of `get`, `set`, and delta subscription paths for **optional hybrid structs with annotations** on their fields. This **test enhancement** ensures robust data handling for complex configurations, such as those found in `RibPolicy`, by covering scenarios where annotations are applied to optional struct fields. To support these tests, the `thriftpath_test.thrift` schema was updated with new fields like `optionalAnnotatedStruct` and `fieldAnnotatedMap`. | Mar 14 | 3 | maint |
| 6cb90a7a | This commit **removes specific legacy test artifact packages** from the `fbpkg` build targets. It targets the **`test_artifacts` packages** that are no longer needed or supported within the **`fbpkg` build system**. This is a **maintenance and cleanup effort** aimed at streamlining the build process and reducing technical debt. The change helps to **simplify the overall packaging configuration** by eliminating outdated components, ensuring that only relevant artifacts are built and distributed. | Mar 13 | 2 | – |
| d5d6df6e | This commit introduces a **new Go-based test client** for the **FSDB CGO subscriber**, significantly enhancing the project's **testing infrastructure**. It provides a comprehensive framework for **validating FSDB subscriptions** (state, stat, delta, and patch) and data publishing, specifically for Go components that interact with C++ FSDB via CGO. This **new capability** includes C++ implementations for both a generic `FsdbCgoSubscriber` and a more advanced `FsdbTestCgoClient` (which can also publish test data), along with their respective Go wrappers and a command-line test utility. The addition of this client and its associated tests ensures robust and reliable operation of Go-based FSDB subscribers. | Mar 12 | 12 | grow |
| 88f4b771 | Use annotation from configerator | Mar 12 | 1 | – |
| 635bac6b | This commit **refactors** the **`thrift_cow` library** to parse the `AllowSkipThriftCow` annotation from a **centralized `configerator`-sourced Thrift definition** instead of an internal FBOSS one. This involves updating the `thrift_cow` node processing logic in `Traits.h` to reference the new namespace and include path. As a result, various **FBOSS Thrift schemas** within `fboss/agent`, `fboss/fsdb`, and `fboss/thrift_cow/nodes/tests` are updated to use the new annotation source and prefix. The **build system dependencies** (CMake and BUCK files) are also adjusted to ensure all components correctly link against the `configerator` common Thrift definitions, ensuring consistent and correct annotation handling across the project. | Mar 12 | 15 | maint |
| 5945f2e5 | This commit **enhances** the `thrift_cow` library to **parse a new annotation**, `AllowSkipThriftCow`, which is defined within `configerator`-sourced Thrift schemas. This update enables developers to explicitly mark specific fields in Thrift structures to **opt-out of Copy-on-Write (COW) behavior**, offering finer control over data handling. Concurrently, existing **Thrift schemas** are being updated to adopt this new annotation, ensuring its proper application across the codebase. This change primarily impacts the **serialization and deserialization logic** within `thrift_cow` and the definition of data structures, allowing for more optimized memory usage in certain scenarios. | Mar 12 | 5 | – |
| dea5cf4c | This commit **updates the FSDB client's stress test** (`stress_test_client.cpp`) to adopt the **`Path` subscription mechanism for statistics**. This is a **maintenance update** that **replaces the use of the deprecated `Delta` subscription** for stat collection within the test client. By migrating to the newer API, the **FSDB client's testing infrastructure** remains aligned with current best practices and ensures future compatibility. The change is confined to the test client, with no direct impact on production functionality. | Mar 6 | 1 | maint |
| bac29ec3 | This commit performs **code cleanup** by **removing unused Stats Delta subscription APIs** from the **`FsdbPubSubManager` library**. These APIs, specifically those handling `Stats Delta` subscriptions, were identified as no longer being utilized within the `FsdbPubSubManager` component. This **maintenance** effort streamlines the codebase, reducing its footprint and improving overall maintainability by eliminating dead code from the `FsdbPubSubManager` module. | Mar 6 | 4 | – |
| 063baf94 | This commit **removes the `addStatDeltaSubscription` helper method** and associated test logic from the **`FsdbPubSubManager` unit tests**. This **test cleanup** is a **maintenance** task, aligning the tests with the ongoing removal of the unused Stats Delta Subscription API from the `FsdbPubSubManager` library. Specifically, `FsdbPubSubManagerTest.cpp` in both `fboss/fsdb/client/test/` and `fboss/fsdb/tests/client/` are updated to remove references to this deprecated functionality. The change streamlines the test suite by eliminating dead code and improving the maintainability of the **`FsdbPubSubManager` client component**. | Mar 6 | 2 | maint |
| bf0fca01 | This commit **removes the Stats Ext Delta subscription API** from the **`FsdbPubSubManager` library**, streamlining its interface. This is a **cleanup and refactoring** effort, specifically eliminating an outdated or unused API for external delta statistics subscriptions. The change simplifies the `FsdbPubSubManager` module by reducing its API surface. This action is a preparatory step for subsequent work aimed at consolidating and further cleaning up `Stats Delta` subscriptions throughout the system. | Mar 4 | 4 | – |
| b3d617e0 | This commit **refactors** the `fboss` codebase by **migrating** all instances of the deprecated `apache::thrift::reflect_struct` API to the modern `apache::thrift::op::get_field_id_v` for **Thrift reflection**. Specifically, it updates various **`fboss/fsdb`** and **`fboss/thrift_cow`** test helpers and utility functions, such as `publishStatePatch` and `makePatch`, to use the new "always-on" reflection API. This **maintenance** task ensures the codebase leverages the latest Thrift reflection capabilities, improving consistency and future compatibility, with `folly::to_underlying()` used where integer field IDs are required. | Mar 4 | 8 | maint |
| 52532ce3 | This commit implements a **documentation update** to improve the accuracy of **FBOSS project metadata**. It specifically **corrects the description for the `FSDB` component** within the `.github/CODEOWNERS` file. The previous "Fast Switch Database" entry has been updated to the more precise "FBOSS State Database". This minor **maintenance fix** enhances clarity for developers reviewing code ownership information, with no impact on runtime functionality. | Mar 3 | 1 | maint |
| 6d18cf92 | This commit introduces a **new feature** to the **FSDB server** by enhancing subscriber information. It adds a `subscribedSince` timestamp to the `OperSubscriberInfo` structure, which is populated when a new subscriber is created. Specifically, the `makeSubscriberInfo` function within `fboss/fsdb/server/ServiceHandler.cpp` is updated to record the connection time. This change provides better visibility into the lifecycle of **patch subscriptions**, allowing operators to see precisely when a subscriber connected. | Feb 25 | 1 | grow |
This commit introduces a new **gflag `client_id`** within the **FSDB client stress test utility** (`fboss/fsdb/client/test/stress_test_client.cpp`). This **test enhancement** allows for specifying a custom client ID, enabling the creation of multiple distinct subscriber or publisher streams during stress tests. By supporting a mix of subscriber types (e.g., Path, Patch, stats) and varied behaviors (e.g., slow, stuck, repeatedly disconnecting) for functions like `subscribe` and `publishPathImpl`, it significantly improves the ability to simulate complex scenarios. This change enhances the robustness and realism of **FSDB client stress testing**, ensuring better validation of its resilience and performance.
This commit **fixes a crash** in the **FSDB subscriber** that occurred when handling **multi-path delete patches**, specifically when the last subscribed struct in a container was deleted. The **bug fix** addresses an issue within the `thrift_cow`'s `PathVisitor` component, where the `visitNode` function failed to correctly identify and visit the nearest container ancestor for certain delete patch scenarios. By ensuring the container containing the base path is always visited, even when the path ends at a non-container, non-primitive node, this change provides uniform and robust handling for all delete operations. This prevents unexpected crashes and improves the reliability of **FSDB multi-path patch subscriptions**, with new tests added in `FsdbSubManagerTest.cpp` to validate the corrected behavior.
This commit introduces a **new capability** to generate **versioned `RibMap` test data** within the `fboss/thrift_cow/storage/tests` module. Functions in `TestDataFactory.cpp` and `TestDataFactory.h`, such as `getStateUpdate` and `buildBgpData`, are modified to accept version parameters. This allows the **test data generation utilities** to produce varying prefixes and AS paths based on the specified version. The change enhances the flexibility of the testing framework, enabling more comprehensive and robust testing of version-dependent `RibMap` logic.
This commit introduces a **new publisher mode** to the **FSDB client stress test utility**, `stress_test_client.cpp`. This **new feature** allows the client to simulate publishing state or statistics to the FSDB system, with configurable options for the publishing path, data role (e.g., `MaxScale`), and interval. It enhances the testing capabilities by enabling more realistic stress scenarios for FSDB data ingestion, allowing developers to test how FSDB handles various data streams. The build system (`BUCK`) was also updated to support these new functionalities.
This commit **fixes a critical SIGSEGV crash** in the `fboss_sw_agent` that occurred during **graceful exit**. The crash stemmed from a **race condition** where the `TunIntf::handlerReady` callback, running on a separate thread, would attempt to process packets using `SwSwitch` members that had already been deallocated by the main thread during shutdown. To resolve this, an `isExiting()` guard was added to the beginning of `TunIntf::handlerReady`, ensuring that packet processing is **prevented if the switch is shutting down**. This significantly improves the **stability and reliability of the agent's shutdown procedure**, preventing access to invalid memory, and is validated by a new test case in `TunInterfaceTest.cpp`.
This commit **fixes a critical race condition** in the **`TunManager` shutdown process** that could lead to a `SIGSEGV` crash during graceful exit. Previously, `TunManager::stopProcessing()` would unregister event handlers from the main thread without waiting for in-flight `handlerReady` callbacks on the `EventBase` thread, causing them to access already destroyed `SwSwitch` members. The **bug fix** ensures `TunManager::stop()` is executed on the `EventBase` thread via `runImmediatelyOrRunInFbossEventBaseThreadAndWait()`, guaranteeing all pending event processing completes before resource deallocation. This provides **robust and graceful termination** for the FBOSS agent, particularly impacting the **`TunManager` subsystem**'s interaction with the `EventBase`. A new test case in `fboss/agent/test/TunInterfaceTest.cpp` has been added to validate this synchronization.
This commit performs a **cleanup** operation by **removing a legacy annotation** within the `fbcode HybridCow` system. Specifically, it targets the `AllowSkipThriftCow` annotation, which is no longer needed. This **maintenance** task improves code hygiene and reduces technical debt by eliminating obsolete definitions, ensuring the `HybridCow` codebase remains streamlined and easier to maintain.
This commit introduces **new unit tests** for the `SubscribableStorage` component within `fboss/fsdb/oper`. These tests specifically validate the correct behavior of `get`, `set`, and delta subscription paths for **optional hybrid structs with annotations** on their fields. This **test enhancement** ensures robust data handling for complex configurations, such as those found in `RibPolicy`, by covering scenarios where annotations are applied to optional struct fields. To support these tests, the `thriftpath_test.thrift` schema was updated with new fields like `optionalAnnotatedStruct` and `fieldAnnotatedMap`.
This commit **removes specific legacy test artifact packages** from the `fbpkg` build targets. It targets the **`test_artifacts` packages** that are no longer needed or supported within the **`fbpkg` build system**. This is a **maintenance and cleanup effort** aimed at streamlining the build process and reducing technical debt. The change helps to **simplify the overall packaging configuration** by eliminating outdated components, ensuring that only relevant artifacts are built and distributed.
This commit introduces a **new Go-based test client** for the **FSDB CGO subscriber**, significantly enhancing the project's **testing infrastructure**. It provides a comprehensive framework for **validating FSDB subscriptions** (state, stat, delta, and patch) and data publishing, specifically for Go components that interact with C++ FSDB via CGO. This **new capability** includes C++ implementations for both a generic `FsdbCgoSubscriber` and a more advanced `FsdbTestCgoClient` (which can also publish test data), along with their respective Go wrappers and a command-line test utility. The addition of this client and its associated tests ensures robust and reliable operation of Go-based FSDB subscribers.
Use annotation from configerator
This commit **refactors** the **`thrift_cow` library** to parse the `AllowSkipThriftCow` annotation from a **centralized `configerator`-sourced Thrift definition** instead of an internal FBOSS one. This involves updating the `thrift_cow` node processing logic in `Traits.h` to reference the new namespace and include path. As a result, various **FBOSS Thrift schemas** within `fboss/agent`, `fboss/fsdb`, and `fboss/thrift_cow/nodes/tests` are updated to use the new annotation source and prefix. The **build system dependencies** (CMake and BUCK files) are also adjusted to ensure all components correctly link against the `configerator` common Thrift definitions, ensuring consistent and correct annotation handling across the project.
This commit **enhances** the `thrift_cow` library to **parse a new annotation**, `AllowSkipThriftCow`, which is defined within `configerator`-sourced Thrift schemas. This update enables developers to explicitly mark specific fields in Thrift structures to **opt-out of Copy-on-Write (COW) behavior**, offering finer control over data handling. Concurrently, existing **Thrift schemas** are being updated to adopt this new annotation, ensuring its proper application across the codebase. This change primarily impacts the **serialization and deserialization logic** within `thrift_cow` and the definition of data structures, allowing for more optimized memory usage in certain scenarios.
This commit **updates the FSDB client's stress test** (`stress_test_client.cpp`) to adopt the **`Path` subscription mechanism for statistics**. This is a **maintenance update** that **replaces the use of the deprecated `Delta` subscription** for stat collection within the test client. By migrating to the newer API, the **FSDB client's testing infrastructure** remains aligned with current best practices and ensures future compatibility. The change is confined to the test client, with no direct impact on production functionality.
This commit performs **code cleanup** by **removing unused Stats Delta subscription APIs** from the **`FsdbPubSubManager` library**. These APIs, specifically those handling `Stats Delta` subscriptions, were identified as no longer being utilized within the `FsdbPubSubManager` component. This **maintenance** effort streamlines the codebase, reducing its footprint and improving overall maintainability by eliminating dead code from the `FsdbPubSubManager` module.
This commit **removes the `addStatDeltaSubscription` helper method** and associated test logic from the **`FsdbPubSubManager` unit tests**. This **test cleanup** is a **maintenance** task, aligning the tests with the ongoing removal of the unused Stats Delta Subscription API from the `FsdbPubSubManager` library. Specifically, `FsdbPubSubManagerTest.cpp` in both `fboss/fsdb/client/test/` and `fboss/fsdb/tests/client/` are updated to remove references to this deprecated functionality. The change streamlines the test suite by eliminating dead code and improving the maintainability of the **`FsdbPubSubManager` client component**.
This commit **removes the Stats Ext Delta subscription API** from the **`FsdbPubSubManager` library**, streamlining its interface. This is a **cleanup and refactoring** effort, specifically eliminating an outdated or unused API for external delta statistics subscriptions. The change simplifies the `FsdbPubSubManager` module by reducing its API surface. This action is a preparatory step for subsequent work aimed at consolidating and further cleaning up `Stats Delta` subscriptions throughout the system.
This commit **refactors** the `fboss` codebase by **migrating** all instances of the deprecated `apache::thrift::reflect_struct` API to the modern `apache::thrift::op::get_field_id_v` for **Thrift reflection**. Specifically, it updates various **`fboss/fsdb`** and **`fboss/thrift_cow`** test helpers and utility functions, such as `publishStatePatch` and `makePatch`, to use the new "always-on" reflection API. This **maintenance** task ensures the codebase leverages the latest Thrift reflection capabilities, improving consistency and future compatibility, with `folly::to_underlying()` used where integer field IDs are required.
This commit implements a **documentation update** to improve the accuracy of **FBOSS project metadata**. It specifically **corrects the description for the `FSDB` component** within the `.github/CODEOWNERS` file. The previous "Fast Switch Database" entry has been updated to the more precise "FBOSS State Database". This minor **maintenance fix** enhances clarity for developers reviewing code ownership information, with no impact on runtime functionality.
This commit introduces a **new feature** to the **FSDB server** by enhancing subscriber information. It adds a `subscribedSince` timestamp to the `OperSubscriberInfo` structure, which is populated when a new subscriber is created. Specifically, the `makeSubscriberInfo` function within `fboss/fsdb/server/ServiceHandler.cpp` is updated to record the connection time. This change provides better visibility into the lifecycle of **patch subscriptions**, allowing operators to see precisely when a subscriber connected.