I hit this issue when writing some experimental code and it may just be an unexpected coming together of settings. Similar to Lyra, all the settings in UDataRegistrySettings were left to default. This means an empty DirectoriesToScan and bInitializeAllLoadedRegistries is set to false.
Lyra only uses “Add Data Registry” which ends up calling UDataRegistrySubsystem::LoadRegistryPath which seems to work fine (it basically mutates AssetScanPaths which then makes RefreshRegistryMap behave as expected).
In my case I am manually loaded a data registry with the aim to then have a game feature plugin add a source to this. UGameFeatureAction_DataRegistrySource calls UDataRegistrySubsystem::PreregisterSpecificAssets which has an early out if IsConfigEnabled returns false. Because of the previous mentioned settings in UDataRegistrySettings, IsConfigEnabled will return false and thus my data source will never be scheduled to be added.
Now, this may be a case where I’m using the feature wrong (after all, my manual registry is not discoverable), but this feels a bit counterintuitive. Unless the expectation is that you set bInitializeAllLoadedRegistries to true if you are using game features, but that is not documented.
EDIT: thinking about it a bit more, due to how the data registry discovers assets, the only way to manually load and handle a data registry asset is likely in the same way game feature plugins register them (which means it gets added to the asset paths and this the registry refresh would handle it correctly).
Not in a position to test a repro right now for this, but I suspect if you use Lyra, and get a second game feature plugin to add a data source to the data registry that is added by ShooterCore it would likely fail due to the IsConfigEnabled check given Lyra’s ini configuration.
[Attachment Removed]