Huy
08/14/2026, 7:33 AMAsk Inkeep
08/14/2026, 7:33 AMAsk Inkeep
08/14/2026, 7:33 AMhttp.send as part of policy in one PDP to fetch missing data from another PDP (chaining) (2) .
Regarding OPAL's data-loading mechanism itself: OPAL_DATA_CONFIG_SOURCES defines the instructions clients use to reach baseline data state, and OPAL doesn't send the data itself over pub/sub — it sends instructions to clients on how to fetch data directly via data-fetchers (1) :
- OPAL_DATA_CONFIG_SOURCES={
"config":{
"entries":[
{
"url":"<http://host.docker.internal:8000/permissions.json>",
"topics":["permissions"],
"dst_path":"/course_permissions"
}
]
}
}
I don't have documented evidence of an environment variable that offloads the store itself to a database rather than OPA's memory. If you're seeing memory/crash issues with your own PDP, could you share:
1. Which Workspace / Project / Env you're using
2. What calls you're performing (SDK code or CURL)
3. Which PDP version you're running
4. Relevant logs from your PDP
This would help pin down whether sharding or data minimization is the right path for your setup.Ask Inkeep
08/14/2026, 7:34 AMHuy
08/14/2026, 8:27 AMHuy
08/14/2026, 8:27 AMAsk Inkeep
08/14/2026, 8:27 AMAsk Inkeep
08/14/2026, 8:28 AMhttp.send as part of the policy in one PDP to fetch missing data from another .
But there's also an approach that avoids loading large volumes into OPA's memory at all: source-level filtering via partial evaluation. Here, the PDP returns a query basis (e.g., SQL) that's appended to an existing query and sent to the database, which returns only the relevant, pre-filtered data — meaning the DB query itself is modified before execution, rather than pulling all data into the PDP/OPA (2) . This capability is available under OPA's compile API and is already supported within Permit's PDP .
Also relevant to your scenario — you can group related items by shared attributes (time frames, departments, categories) and pass a single group identifier to a PDP or database filter, rather than handling massive lists of unique IDs. For very large volumes, filtering at the source via partial evaluation prevents a flood of irrelevant rows from ever leaving the database (3) .
So the choice depends on your use case: if you need OPA to actually hold and evaluate against the full dataset, sharding across multiple PDPs is the documented path (1) . If you can restructure your policy to filter at the database layer instead, partial evaluation avoids the RAM/scale problem entirely (2) (3) .
If you're still hitting memory issues with your current PDP setup, it would help to know:
1. Which Workspace / Project / Env you're using
2. What calls you're performing (SDK code or CURL)
3. Which PDP version you're running
4. Relevant logs from your PDPAsk Inkeep
08/14/2026, 8:28 AMdavid
08/14/2026, 2:10 PMHuy
08/15/2026, 4:17 AMdavid
08/19/2026, 8:59 AMHuy
08/22/2026, 9:47 AM