Releases: FIWARE/context.Orion-LD
Orion-LD v1.7.0
The main new feature of Orion-LD 1.7.0 is the ability to natively receive "notifications" via FastDDS.
In 3-6 months, Orion-LD will also be able to natively push to DDS.
DDS samples (published on a topic) are considered NGSI-LD attributes and to translate a DDS topic info NGSI-LD Attribute Name, Entity ID and Entity Type, a configuration file needs to be filled in. See #1696 for more information.
New Features:
- Native support for read-only DDS (off by default - to activate use CLI:
-wip dds
) - see issue #1696 - Distributed subscriptions: subordinate subscriptions are DELETED when their "father" is deleted.
- Support for the URL parameter 'csf' in GET /ngsi-ld/v1/csourceRegistrations
- Support for the URL parameter 'orderBy=attrName' in GET
/ngsi-ld/v1/entities
, but only if 'local=true' is set. (This is not NGSI-LD standard. Yet ...)- Also supporting sorting on entity id, type, and modifiedAt
- One more URL parameter '?reverse=true' to reverse the sorting order
- This was later slightly modified and standardized in ETSI ISG CIM and will be part of v1.89.1 of the NGSI-.LD API spec.
- Support for GET /ngsi-ld/v1/info/sourceIdentity
- Support for management::localOnly in registrations
- Support for new CLI parameter '-pageSize' to set the default pagination limit (default is 20 if -pageSize is not used)
Fixed Issues:
#1621: URL-Encoding single quote in attribute values in TRoE DB
#1649: Crash when using subscriptions in a mixed environment (LD and V2)
#1682: Default User Context
#1688: Forward of idPattern URL parameter
Orion-LD v1.6.0
Fixed Issues:
- #1535: Ignore Subscription::q when matching subscriptions for deletion of an entity
- #1542: Array Reduction (arrays of one single element are "flattened" to that very element)
- #1551: format=simplified for distribute GET /entities gave Normalized for entities from other brokers
- #1557: Cannot count entities if geo query with $near - mongodb doesn't allow it
- #1573: pagination not working when entities have the exact same creation date (sort also by entity id)
- #1583: If a 'q' contains an ampersand, that ampersand needs to be forwarded as a semicolon
- #1593: Modify the type of an entity in a Replace operation (only working in legacy mode)
- #1612: Support for ISO8601 timezones expressed in +/- HH:mm in 'q' for entity query
- #1615: Crash in HTTPS notifications with a notification endpoint with empty URL PATH
- SOF: https://stackoverflow.com/questions/77911109/fiware-to-payload-too-large
- Fixed a possible crash for TRoE and attributes of type Vocab/Json/Language
- Forbidden to DELETE the Core Context !!! (it can be reloaded)
- Bug fix: JSON NULL literal is no longer forwarded!
- Improved treatment of malfunctioning notification receivers, on timeout (for clients that don't respond to notifications)
- Core context added to response if @context in payload body (Accept: application/ld+json)
New Features:
- Support for attributes of type VocabularyProperty
- Support for attributes of type JsonProperty
- Support for the new URL parameter "format" for output formats (normalized, concise, simplified)
- New service: DELETE /ngsi-ld/v1/entities (support for URL param 'type' only - the rest of the options are still missing)
- First draft of Distributed Subscriptions
Notes
- TRoE is still not prepared for attributes of type Vocab/Json/Language, so, attributes of those types are not stored in the historical database
- Improved the @context hosting feature to be according to API spec
Orion-LD version 1.5.1
Orion-LD version 1.5.0
Distributed GET /entities
The main new feature of v1.5.0 is "Distributed GET /entities", using the new concept of "Entity Maps", which is a part of the additions in the 1.8.1 version of the NGSI-LD spec about to be published (some time in January 2024).
It is still a work in progress but mostly working, though it is not 100% spec compliant.
To try it out, start Orion-LD with the CLI option -wip entityMaps
(and -distributed
to turn on distributed operations).
Bug fixes since v1.4.0:
- #1419 - Fixed a bug in the cleanup of the "URL being downloaded list" - not being cleaned up in case of an error
- #1427 - Disabling the keep-alive as it seems to be missing in libpaho
- #1456 - Entity id+type duplicated in forwarded request of "Create Entity"
- #1458 - Supporting system timestamps (createdAt/modifiedAt) in q
- #1451 - Bug fix - removed a trailing ampersand from the URI for the connection to mongodb
- #1418 - Performance - Faster startup when there are GeoProperties in the database
- #1478 - Fixed an issue about PATCH on non-existent entity in federation giving a 204 instead of a 404
- #1479 - Fixed problem with "operations" in registrations
- #1496 - Fixed a crash - a double free()
Other additions from the backlog:
- Added extensive logging for downloading of contexts
- Better 501 handling of temporal operations
- Changed all error codes from InvalidRequest to BadRequestData, except for JSON Parse Error that is still an InvalidRequest
- Fixed a bug in error detection of downloading errors in arrays of contexts, at lower nesting levels
- Fixed a crash in the subscription cache for subscriptions with empty URL paths in the notification::endpoint::uri field
- Fixed two erroneous type values in the response payload body (EntityTypeInformation => EntityTypeInfo and EntityAttributeList => AttributeList)
- Giving errors for expiresAt in the past (for registrations and subscriptions)
- Highly experimental feature for subscriptions: allowing a wildcard as value for entity type, to not filter on entity type
- Support for 'Periodic Notifications' (subscriptions with a 'timeInterval')
- New CLI (hidden) for extra field in notifications (trigger: "VERB URL PATH"): -triggerOperation
- Using Via header for loop detection (includes a new field 'hostAlias' in the registrations)
Use the new CLI parameter-brokerId
to set the identifier of the Orion-LD instance (same value as "hostAlias" in registrations for it to work) - Fixed a bug in the lookup of pernot subscriptions
Orion-LD version 1.4.0
Main additions/fixes since v1.3.0:
- Protection for POST /temporal/entities against usage when troe is not enabled.
- Support for different core contexts via CLI parameter
-coreContext <v1.0|v1.3|v1.4|v1.5|v1.6|v1.7>
(v1.6 is default). - Re-implemented the propagation of subscriptions between brokers in HA (sub-cache synchronization).
- Fixed a stupid bug in the size of the postgres connection pool (a hardcoded size of 10 connections, instead of using the variable tied to the CLI option
-troePoolSize
, meant for this!!!). - Issue #1412: Health check for Postgres connections (external contribution by cfreyth, thank you very much!).
Orion-LD version 1.3.0
The release 1.3.0 of Orion-LD introduces the following major improvements:
- New CLI param to modify the maximum size of incoming payloads (-inReqPayloadMaxSize)
- The Core Context now part of the broker - meant for airgapped setups
- System Attributes in Notifications
- Fixed a bug in the Host header of new notifications
Orion-LD v1.2.1
Bug fixes for v1.2.0
#1368 - Fixed a bug in subscription patch regarding modification of cached fields 'description', 'q', and 'entities'
#1374 - similar to #1368
#280 - error handling in registration creation - making sure exclusive registrations specify mandatory fields entity-id and attributes
#280 - error handling in registration updates - making sure exclusive registrations specify mandatory fields entity-id and attributes
Orion-LD v1.2.0
The release 1.2.0 of Orion-LD introduces the following major improvements:
- Full support for the new MongoDB driver (currently using mongoc v1.22.0)
- Decent amount of API endpoints supporting distributed operations (as of v1.6.1 of the NGSI-LD API, released in August 2022)
- Notifications for deletion of entities
- Implemented PUT /entities/{entityId}/attrs/{attrName}
- Better trace levels
This is the complete list of features/fixes (quite a few come from issue #280, which means it came from the backlog, not from a user request):
New mongo driver (you still need to start the broker with -experimental
for this):
- Issue #280 Reimplementation of BATCH Upsert, using the new mongo driver (mongoc) - if -experimental is set
- Issue #280 Reimplementation of BATCH Update, using the new mongo driver (mongoc) - if -experimental is set
- Issue #280 Reimplementation of BATCH Create, using the new mongo driver (mongoc) - if -experimental is set
- Issue #280 Reimplementation of BATCH Delete, using the new mongo driver (mongoc) - if -experimental is set
- Issue #280 Reimplementation of BATCH Query, using the new mongo driver (mongoc) - if -experimental is set
- Issue #280 Reimplementation of POST /entities/attrs, using the new mongo driver (mongoc) - if -experimental is set
- Issue #280 Reimplementation of DELETE /entities/attrs/{attrName}, using the new mongo driver (mongoc) - if -experimental is set
- Issue #280 Reimplementation of PATCH /entities/attrs, using the new mongo driver (mongoc) - if -experimental is set
- Issue #280 Reimplementation of GET /types, using the new mongo driver (mongoc) - if -experimental is set
- Issue #280 Reimplementation of GET /types/{typeName}, using the new mongo driver (mongoc) - if -experimental is set
- Issue #280 Reimplementation of GET /attributes, using the new mongo driver (mongoc) - if -experimental is set
- Issue #280 Reimplementation of GET /attributes/{attrName}, using the new mongo driver (mongoc) - if -experimental is set
- Issue #280 Reimplementation of PATCH /entities/attrs/{attrName}, using the new mongo driver (mongoc) - if -experimental is set
- Issue #280 Reimplementation of GET /csourceRegistrations/{regId} using mongoc AND the Registration cache
- Issue #280 Reimplementation of POST /csourceRegistrations using mongoc AND the Registration cache
- Issue #280 Reimplementation of DELETE /csourceRegistrations/{registrationId} using mongoc AND the Registration cache
- Issue #280 Reimplementation of PATCH /csourceRegistrations/{registrationId} using mongoc AND the Registration cache
- Issue #280 Reimplementation of GET /csourceRegistrations using the Registration cache
- Issue #1338 Removed a mongoc-only check, as all operations now support mongoc
New Distributed Operations:
- Issue #280 Implemented the new forwarding for POST /entities
- Issue #280 Implemented the new forwarding for GET /entities/{entityId}
- Issue #280 Implemented the new forwarding for entity deletion, for DELETE /entities/{entityId}
- Issue #280 Implemented the new forwarding for Batch entity deletion, for POST /entityOperations/delete
- Issue #280 Implemented the new forwarding for PATCH /entities/{entityId}
- Issue #280 Implemented the new forwarding for PATCH /entities/{entityId}/attrs
- Issue #280 Implemented the new forwarding for PATCH /entities/{entityId}/attrs/{attrName}
- Issue #280 Implemented the new forwarding for DELETE /entities/{entityId}/attrs/{attrName}
- Issue #280 Implemented the new forwarding for POST /entities/{entityId}/attrs
Other Features and fixes:
- Issue #280 Implemented support for HTTPS notifications for the new implementation (experimental)
- Issue #280 Persisting counters and timestamps of subscriptions from the subscription cache in the database
- Issue #280 New CLI option: -cSubCounters - number of subscription counter updates before flushing to DB (0: never, 1: always)
- Issue #280 Bug fix: getting lastNotification, lastSuccess, lastFailure from DB in when refreshing the subscription cache
- Issue #280 TRoE for PUT /entities/{entityId}
- Issue #280 Better health check - before accepting, a connection to the mongo server is done (and postgres if troe is enabled)
- Issue #1229 Fixed a CRASH on erroneous q, when creating subscriptions
- Issue #1258 Fixed a bug in Q-Parser: negative floating point values were not handled
- Issue #1260 Invalid long-name of an attribute in error responses (eq-sign instead of dot)
- Issue #1261 'lang' URI param support for PATCH /entities/{entityId}
- Issue #1262 keyValues/simplified input format for PATCH /entities/{entityId}
- Issue #1269 Fixed a bug in BATCH Upsert
- Issue #1287 Fixed a bug in GET /entities/{entityId}?attrs=xxx, that always included 'location' in the response
- Issue #1297 Fixed a typo in a string (modifiededAt => modifiedAt)
- Issue #1307 Added the feature of "urn:ngsi-ld:request" to notifications (forwarding a header with its value from the initial request)
- Issue #1307 Implemented notifications for entity deletion, for DELETE /entities/{entityId}
- Issue #1312 Better error handling for a specific use case about RHS being 'null'
- Issue #1315 Ditto
- Issue #1316 Fixed a bug in sub-cache population for non-default tenant (issue #1315 is about the same)
- Issue #1317 Removed an unfortunate error message about "not a valid timestamp"
- Issue #1322 Default port for HTTPS is 443, for HTTP: 80
- Issue #1322 Fixed an error in subscription stats (for -experimental)
- Issue #1322 Implemented better notification response reception and much better log messages
- Issue #1340 Fixed a dangling pointer bug
- Issue #1343 Added the HTTP header (well, for mqtt notfications also) 'Host' for notifications
- Issue #1344 Accepting hyphen as a valid character for a tenant
- Issue #1348 Unsupported value added to mongodb url (hyphen)
- Issue #1353 properties/relationships in regs is now propertyNames/relationshipNames in all responses for GET Regs
- Issue #1353 properties/relationships in regs now also supported as propertyNames/relationshipNames in requests for non experimental
- Issue #1356 Made Orion-LD accept a configurable max size for incoming/outgoing payload bodies
Orion-LD v1.1.2
Fixed a crash in PATCH /entities/{entityId}
when updating a property "value" from an array to another array, if any of the two arrays are empty.
Orion-LD v1.1.1
Minor bug fix: Issue #1227 - case insensitive matching for HTTP request headers