v2.5.1
Highlights
- Fixed a crash in
ArchiveExtractToolandRescanIndexToolwhen running on processing nodes, caused by resolvingIObjectsManager(not registered on the node container). - Extracted
IDatasetCacheInvalidatorfromIObjectsManagerso dataset cache invalidation works correctly on both web hosts and processing nodes. - Added
ProcessingNodeDiCompletenessTeststo catch missing DI registrations before they reach runtime on deployed processing nodes.
Added / Changed
- Added
IDatasetCacheInvalidatorport andDatasetCacheInvalidatoradapter, registered as a singleton on every host (web server and processing node) throughAddProcessingPlatform. - Added
ProcessingNodeServiceCollectionExtensions.AddProcessingNodeServicesextension method to centralize the processing-node DI container, enabling the same container to be built in tests. - Added
ForOgcCapabilitiesPatternandForOgcLayersPatternhelpers toCacheCategories;OgcLayerCatalogupdated to use them. - Added
ProcessingNodeDiCompletenessTests: regression tests that build the processing-node container and assert all heavy-tool dependencies resolve correctly. - Added
DatasetCacheInvalidatorTestscovering all cache categories, OGC key patterns, and best-effort failure swallowing. - Added
OrphanedDatasetCleanupCron,JobIndexCleanupCron, andJobIndexRetentionDays(default 60 days) toappsettings-default.json. - Added
ExternalAuthUrl: nullexplicit default toappsettings-default.json. ObjectsManager.InvalidateAllDatasetCachesnow delegates toIDatasetCacheInvalidatorinstead of owning the logic inline.- Refactored
Program.RunAsProcessingNodeto callAddProcessingNodeServicesinstead of registering services inline. - [Hub] Added copy-to-clipboard button for file hash in the detail panel properties table.
- [Hub] Removed raw
hashfield from the file properties display; hash is now accessible only via the copy button. - [Hub] Added
.p-button-icon { cursor: pointer }CSS fix.
Fixed
- Fixed
ArchiveExtractToolresolvingIUtils(quota check) andIObjectsManager(cache invalidation) on the Hangfire worker, where neither service is registered. Quota check is now skipped whenctx.Callerisnull(worker context); cache invalidation usesIDatasetCacheInvalidatorinstead. - Fixed
RescanIndexToolresolvingIObjectsManagerfor cache invalidation on the processing node; switched toIDatasetCacheInvalidator. - Fixed
ArchiveExtractToolTests.ValidateAsyncnot covering the processing-node (no-caller, no-IUtils) scenario; addedValidateAsync_NoCaller_SkipsQuotaChecktest. - [Hub] Fixed
copyableValuesprop not being forwarded through nestedPropsTablecomponents.
Full Changelog: v2.5.0...v2.5.1