Skip to content

Releases: FIWARE/context.Orion-LD

Orion-LD v1.6.0

15 Jul 12:24
Compare
Choose a tag to compare

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

The release is available on dockerhub and quay.io.

Orion-LD version 1.5.1

12 Jan 19:12
Compare
Choose a tag to compare

Three bug fixes:

  • Issue #1525: Fixed a bug about cutting of HTTP headers for distributed requests
  • Issue #1495: Fixed a CRASH about HTTP headers longer than 255 bytes for notifications over HTTPS
  • Issue #1532: Adding the port to the Host header for notifications

The release is available on dockerhub and quay.io.

Orion-LD version 1.5.0

28 Dec 17:58
Compare
Choose a tag to compare

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

The release is available on dockerhub and quay.io.

Orion-LD version 1.4.0

26 Aug 08:30
Compare
Choose a tag to compare

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!).

The release is available on dockerhub and quay.io.

Orion-LD version 1.3.0

17 Jul 16:03
Compare
Choose a tag to compare

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

17 May 11:38
Compare
Choose a tag to compare

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

03 May 14:07
Compare
Choose a tag to compare

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

15 Dec 12:46
Compare
Choose a tag to compare

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

22 Sep 08:15
Compare
Choose a tag to compare

Minor bug fix: Issue #1227 - case insensitive matching for HTTP request headers

Orion-LD v1.1.0

29 Jul 17:03
Compare
Choose a tag to compare

Fixed Issues:

  • Issue #954 Broker crashes with too big attribute values (Orion-LD's limit for the size of an attribute value is 64k right now)
  • Issue #986 Username and Password for the mongo C driver connection to the MongoDB server
  • Issue #990 mongo::Timestamp support
  • Issue #989 Deprecated bson_append_symbol still in use - change for bson_append_utf8
  • Issue #992 Better implementation of existence check of entities (mongoEntityExists)
  • Issue #1010 Fixed bug related to parsing ISO8601 DateTime strings
  • Issue #1016 Fixed bug related to wrong context in response when input context is an array with a single URL
  • Issue #1015 Implemented 'Concise Input Format' support for all entity/attribute create/update endpoints
  • Issue #1030 Implemented 'Concise Output Format' support for GET /entities/{entityId} and GET /entities
  • Issue #1015 Implemented 'Concise Output Format' support for Notifications
  • Issue #1033 Fixed a bug about Concise GeoJSON returning an Invalid Geometry
  • Issue #1034 Fixed a bug about Array Reduction and Concise Attribute Format
  • Issue #1045 Fixed bug related to TRoE and creation of entity without attributes
  • Issue #1064 Can't forbid '#' in attribute names as it often expands with a hash and we support already expanded attribute names in the payload body
  • Issue #903 SSL connection, etc for mongoc - NOTE: not for legacy driver - only the new, experimental API endpoints (needs testing)
  • Issue #1151 GET /entities?id=X is NO LONGER translated to GET /entities/X - that was a BAD IDEA
  • Issue #280 POST Query was broken - fixed it, including correct treatment of language properties
  • Issue #280 Timestamp support in RANGE in 'q' for subscriptions
  • Issue #280 Support for NOT EQ for range in 'q' for subscriptions
  • Issue #280 New URI param "?local=true", to GET only local entities in GET /entities
  • Issue #280 Support for Prometheus metrics (4 counters for now)
  • Issue #280 Adding tenant to response wherever Location is present
  • Issue #1178 MQTT notifications also when "-notificationMode != threadpool"

New Features:

  • Concise input/output format - more compact but still lossless - see NGSI-LD API spec v1.6.1 for details
  • URI parameter options=simplified as an alias to options=keyValues
  • Support for the OPTIONS method for all NGSI-LD API endpoints
  • 'notifierInfo' and 'receiverInfo' for subscriptions

Replacing the deprecated MongoDB C++ Legacy driver with the newest MongoDB driver (mongoc v1.22.0):

  • Common functions for Getting and Listing tenants now use the new mongo driver
  • Common functions for Geo indices now use the new mongo driver
  • Common function for creation of the _id.id entities index now uses the new mongo driver
  • Using the tenant list when populating the subscription cache instead of querying the database (less Mongo C++ Legacy driver usage)
  • GET /subscriptions/{subId} now uses the subscription cache and no database access is done (less Mongo C++ Legacy driver usage)
  • GET /subscriptions now uses the subscription cache and no database access is done (less Mongo C++ Legacy driver usage)
  • Subscription Cache now uses mongoc and not the old legacy driver
  • Subscription Cache Counters are now updated using mongoc and not with the old legacy driver
  • PATCH subscriptions/{subId} now uses the new mongoc driver

Experimental Features

  • to turn on - start the broker with -experimental.
    Note that this is experimental implementations, not yet thoroughly tested.
    They all pass the basic functional tests, and seem to work just find, but, no promises made.
  • Fresh implementations of services using 'mongoc' (the new MongoDB driver) instead of mongoBackend+Legacy driver:
    • PUT /entities/{entityId} (not supported if -experimental is not used)
    • PATCH /entities/{entityId} (not supported if -experimental is not used)
    • POST /entities (two versions: legacy and mongoc - mongoc version if -experimental is used)
    • GET /entities (two versions: legacy and mongoc - mongoc version if -experimental is used)
    • GET /entities/{entityId} (two versions: legacy and mongoc - mongoc version if -experimental is used)
    • POST /subscriptions (two versions: legacy and mongoc - mongoc version if -experimental is used)
    • DELETE /subscriptions/{subId} (two versions: legacy and mongoc - mongoc version if -experimental is used)
  • Support for LanguageProperty attributes
  • Support for URI parameter 'observedAt' for PATCH /entities/{entityId} in combination with options=keyValues - update existing observedAt sub-attributes