-
Notifications
You must be signed in to change notification settings - Fork 265
/
Changelog
1260 lines (1109 loc) · 92.8 KB
/
Changelog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
4.1.0 (September 12th, 2024)
- Add: custom notification ngsi patching evaluation priority based in evalPriority builtin metadata (#4556)
- Add: attribute metadata to JEXL context (#4594, #4560)
- Fix: $max and $min operators were not supported with DateTime attributes (#4585)
- Fix: wrong date values should not allowed in subscription's expires field (#4541)
- Fix: do not raise DB alarm in case of wrong GeoJSON in client request
- Fix: metadata modifications are not considered as change (with regards to subscription alterationTypes) if notifyOnMetadataChange is false (#4605)
- Fix: invalid date in expires field of subscription (#2303)
- Upgrade cjexl version from 0.3.0 to 0.4.0 (new transformations: now, getTime and toIsoString)
- Upgrade Debian version from 12.4 to 12.6 in Dockerfile
4.0.0 (June 6th, 2024)
- Add: JEXL expression support in custom notification macro replacement (using cjexl 0.3.0) (#4004)
- Add: expression context build and evaluation counters in timing section in GET /statistics (#4004)
- Fix: use null for non existing attributes in custom covered notifications macro substitution (instead of empty string) to make behaviour more consistent (#4004)
- Fix: use null for non existing attributes in macro substitution applied to "paylaod" field (instead of empty string) to make behaviour more consistent (#4004)
- Fix: simplified GET /version operation, without including "libversions" field (add ?options=libVersions to get it)
- Fix: lighter operation to get databases list from MongoDB (#4517)
- Hardening: compile code using C++14 standard
- Remove: `-dbhost`, `-rplSet`, `-dbTimeout`, `-dbuser`, `-dbAuthMech`, `-dbAuthDb`, `-dbSSL` and `-dbDisableRetryWrites` CLI parameters along with associated env vars, already deprecated in Orion 3.12.0 (use `-dbURI` instead`)
- Remove: legacy subscription format
- Remove: all the remaining NGSIv1 operations
- PUT /v1/contextEntities/{id}
- DELETE /v1/contextEntities/{id}
- GET /v1/contextEntities/{id}/attributes/{name}
- POST /v1/updateContext
- POST /NGSI10/updateContext
- POST /v1/queryContext
- POST /NGSI10/queryContext
3.12.0 (February 29th, 2024)
- Fix: service path levels with 0 length should not be allowed (#4495)
- Fix: changed the default value of `-dbTimeout` to 0 to resolve conflict with `-dbURI` (#4496)
- Fix: wrong INFO startup log showing ORION_MONGO_TIMEOUT, ORION_IN_REQ_PAYLOAD_MAX_SIZE and ORION_OUT_REQ_MSG_MAX_SIZE env var values (#4496)
- Fix: return 400 Bad Request when subject.entities exists but it is an empty array (#4499)
- Deprecate: `-dbhost`, `-rplSet`, `-dbTimeout`, `-dbuser`, `-dbAuthMech`, `-dbAuthDb`, `-dbSSL` and `-dbDisableRetryWrites` CLI parameters along with associated env vars (use `-dbURI` instead`)
3.11.0 (January 29th, 2024)
- Add: notification.mqtt.retain and notification.mqttCustom.retain flag for MQTT retain in notifications (#4388)
- Add: CLI parameter -dbUri / env var ORION_MONGO_URI (#3794)
- Add: servicePath field to builtin attributes (#2877)
- Add: notification payload in INFO log traces (#4449)
- Add: log deprecation traces for usage of legacyForwarding mode in registrations
- Add: log deprecation traces for usage of attrsFormat legacy in subscriptions
- Add: deprecatedFeatures counters block in GET /v2/statistics
- Fix: correctly detect JSON attribute and metadata value changes in subscription triggering logic (#4211, #4434, #643)
- Fix: do not show dateExpires built-in attribute in GET /v2/types and GET /v2/types/{type} operations (#4451)
- Fix: builtin attributes alterationType, dateCreated and dateModified included in notifications even when onlyChangedAttrs is true
- Fix: update forwarding was not working when entity type is not included in the request (#4460)
- Fix: DateTime and geo:json types were not supported in custom notifications using ngsi patching (#4435)
- Fix: in custom notification NGSI payload patching macro subscription covering completely the string where is used, always cast to string for id/type (#4462)
- Fix: on delete attributes operation, the lack of attribute in entity doesn't preclude the deletion of attributes which do exist (this way behaving same way as update attributes operation)
- Fix: POST /v2/entities/E/attrs?options=append was wrongly creating entities
- Fix: provide more informative error description in some error responses in update/delete operations
- Fix: proper use of "PartialUpdate" (instead of "Unprocessed") in responses in the case of partial updates/deletions (#3499)
- Fix: response 404 Not Found "NotFound" errors instead of 422 Unprocessable Content "Unprocessed" in the case of missing attribute in existing entity in attribute update operations
- Fix: "Internal Server Error" changed to "InternalServerError" in error responses
- Fix: improve logs in MongoDB query logic
- Fix: logDeprecate not working correctly (`geo:json` wrongly considered as deprecated)
- Fix: false positive in log deprecation logic when entity name (or other literal) includes the token "v1" (#4454)
- Fix: improve error traces (#4387)
- Hardening: upgrade libmongoc dependency from 1.23.1 to 1.24.3
- Reference MongoDB version changed from 4.4 to 6.0
- Reference distribution changed from Debian 11 to Debian 12
- Upgrade Debian version from 11.6 to 12.4 in Dockerfile
- Remove: deprecated NGSIv1 location metadata to specify entity geo-location
3.10.0 (June 12th, 2023)
- Add: option to change deprecate log setting in the REST management API
- Fix: decimal rounding in some cases was generating wrong JSON in query responses and notifications (#4346)
- Fix: pagination support in request query forwarding to Context Providers (#4149, #847, #1647)
- Fix: count option not working when georel=near was in use (500 error was returned)
- Fix: maxFailsLimit didn't work in some cases when update subscription is done just after cache refresh (only when csubs cache is enabled)
- Fix: conditions.notifyOnMetadataChange false not working if condition.attrs is empty
- Deprecate: `geo:json`, `geo:line`, `geo:box` and `geo:polygon` attribute types (use `geo:json` instead)
- Remove: all NGSIv1 operations (deprecated in Orion 2.0.0) except the following ones
- PUT /v1/contextEntities/{id}
- DELETE /v1/contextEntities/{id}
- GET /v1/contextEntities/{id}/attributes/{name}
- POST /v1/updateContext
- POST /NGSI10/updateContext
- POST /v1/queryContext
- POST /NGSI10/queryContext
3.9.0 (June 2th, 2023)
- Add: new simplifiedNormalized and simplifiedKeyvalues for attrsFormat (#4286)
- Add: subject.condition.notifyOnMetadataChange field to subscriptions, so only-metadata changes doesn't trigger notifications (#3727)
- Add: support for update operators ($set, $addToSet, etc.) in entity creation and replace (#3814, reopnened)
- Add: -mqttTimeout (env var ORION_MQTT_TIMEOUT) for MQTT broker connection timeout
- Add: -disableNgsiv1 (env var ORION_DISABLE_NGSIV1) to disable NGSIv1 API requests
- Add: -logDeprecate (env var ORION_LOG_DEPRECATE) to log deprecate usages at WARN level
- Fix: alterationType with entityDelete not working if condition.attrs is empty (#4326)
- Fix: $set/$unset update operator not working properly when the key has dots (#4315)
- Fix: queue workers deadlock when MQTT broker was not responding to connection attemp
- Fix: Ngsiv2-AttrsFormat header set to "normalized" in NGSI patching custom notification
- Fix: memory access potential problem in GET /log/trace request when tracelevel 255 is enabled
- Fix: Orion should return error and refuse to start when port is negative (#3875)
- Fix: subscription autodisable based on maxFailsLimit not working when fails does not happen within the same csubs cache refresh cycle
- Fix: incorrectly sum stale failsCounter from database when subscription has started to work again (only when csubs cache is enabled)
- Fix: MQTT disconnection when MQTT publish fail (so re-connection is forced at next MQTT notification)
- Fix: lineMaxSize and infoPayloadMaxSize in the log admin REST API (#3707)
- Fix: check for service database name too long at cache sync logic (#2848)
- Hardening: upgrade microhttpd dependency from 0.9.73 to 0.9.76
3.8.0 (January 12th, 2023)
- Add: json field in httpCustom and mqttCustom subscriptions to implement JSON-based payloads in notifications (#2560)
- Add: ngsi field in httpCustom and mqttCustom subscriptions to implement NGSI payload patching in notifications (#4085)
- Add: ${service}, ${servicePath} and ${authToken} macros in custom notifications (#4159)
- Add: "Authorization" in CORS allowed headers (#4249)
- Add: requestLegacy counters in GET /statistics response
- Fix: conditions.alterationTypes not working properly when conditions.attributes is used in entityUpdate case (#1494, reopened)
- Fix: GET /v2/types and GET /v2/types/{type} wrong attribute types result (#4216)
- Fix: reset measuring_interval_in_secs correctly reset upon DELETE /statistics (#4233)
- Fix: version request correctly recorded in statistics API (in "/version".GET instead than in separated versionRequests counter) (#4233)
- Fix: GET /v2/registrations/{regId} was wrongly returning 200 OK instaed of 404 Not Found in case of non existing registration (#4235)
- Fix: GET /statistics counters requests now use URLs intead of symbolic names
- Fix: replace $where operator by $expr in subscription query logic in the -noCache case (#4148)
- Upgrade Debian version from 11.2 to 11.6 in Dockerfile
- Hardening: upgrade microhttpd dependency from 0.9.70 to 0.9.73
- Hardening: upgrade libmosquitto dependency from 2.0.12 to 2.0.15
- Hardening: upgrade libmongoc dependency from 1.17.4 to 1.23.1
- Deprecated: GET /v2 operation
- Remove: rendundant routes in administrative REST API not aligned with documentation
- Remove: /ngsi9 URL paths (deprecated since Orion 1.2.0)
- Remove: RPM package stuff
3.7.0 (May 26th, 2022)
- Add: conditions.alterationTypes subscription fuctionality (#1494)
- Add: alterationType built-in atrribute in notifications (#1494)
- Add: covered notifications in subscriptions (#3693)
- Add: support for Feature and FeaturesCollection GeoJSON types (normalizing geometries) in entity locations (#4114)
- Add: support to null element in string list filters (e.g. q=A:foo,null) (#4120)
- Add: improve BadInput logs with extra information when available (#4121)
- Add: debug tracelevel (-t 56) to get information when regex compilation fails (#4098)
- Add: Docker healthcheck based on context broker API
- Fix: allow limit=0 in all paginated operations in the NGSIv2 API (entities, entity types, subscriptions and registrations) (#1492)
- Fix: wrong log traces in update forwarding cases
- Fix: memory leak in MQTT connection management logic when connection to MQTT broker cannot be established
- Reference distribution changed RHEL/CentOS 8 to Debian 11
3.6.0 (March 2nd, 2022)
- Add: ignoreType metadata so Orion ignores attribute type semantic (supported by geo-types at the present moment) (#4032)
- Add: URL decode in header values in custom notifications (#4071)
- Add: new option overrideMetadata to change default update attribute behaviour (#4033)
- Fix: attribute update doesn't override metadata by default (new option overrideMetadata has to be used for that) (#4033)
- Fix: unify error traces with "Runtime Error" (some of them where using "Internal Error" or "Orion Bug")
- Fix: increase severity to ERROR in some WARN traces actually meaning Runtime Error conditions
- Fix: ForwardingError alarm logic, which was missing in some cases
- Fix: cache status not correctly updated when several CBs are working in parallel (#4069)
- Fix: over-updating csubs cache (#4063)
3.5.0 (January 28th, 2022)
- Fix: avoid duplicated attributes and metadata in arrays in POST /v2/subscriptions and PATCH /v2/subscriptions/{subId} (#2101)
- Fix: $each usage with $push operator to add several items to array (#744)
- Fix: allow HTTPS certificates larger than 2048 bytes (#4012)
- Fix: DateTime attribute macro rendering in custom notifications was numeric instead of ISO8601 (#3894)
- Fix: buffer overflow problem in logs subsystem for from= field, causing crash in some cases (#3884)
3.4.0 (December 14th, 2021)
- Add: failsCounter subscription field, to count the number of consecutive notificaitons fails (#3541)
- Add: maxFailsLimit subscription field, so subscription is automatically passed to inactive after that number of failed notification attemps (#3541)
- Add: $set and $unset attribute update operators (#3814, continuation)
- Add: statusLastChange field in csbus collection (as now status is in the csubs cache and we need this field to know if status in the cache or DB is fresher)
- Fix: throttling misbehaviour after subscription update when csubs cache is in use (#3981)
- Fix: lastNotification missed some times in GET /v2/subscriptions/{id} and GET /v2/subscriptions
- Fix: avoid reset timesSent counter upon PATCH /v2/subscriptions/{subId} when csubs cache is in use
- Fix: crash when updating attribute with empty JSON object or array (#3995)
- Fix: csubs cache logic has to ignore fiware-sevice information if -multiservice is not used
- Fix: subscription throttling was not working with value 1 second
- Fix: add subId/regId in "response NOT OK" WARN log traces (#4013)
- Remove: status "failed" in subscriptions (use failsCounter greater than 0 instead)
- Hardening: refactor PATCH /v2/subscriptions/{subId} logic avoiding over-quering MongoDB and possible (although very rare) crash situations during csub cache (#3701)
- Hardening: noCache flag should be check before removing csub from cache in mongoUnsubscribeContext() (#2879)
- Upgrade Dockerfile base image from centos8.3.2011 to centos8.4.2105
3.3.0 (October 25th, 2021)
- Add: attribute update computed values based in operators: $inc, $min, $max, $mul, $push, $addToSet, $pull, $pullAll (#3814)
- Add: support to user and password in MQTT subscriptions (#3914)
- Add: new alarm MqttConnectionError
- Add: per sub notification.http.timeout (#3842)
- Add: hard limit for -requestTimeout to 1800000 millliseconds (30 min)
- Fix: service path ignored in GET /v2/subscriptions/{subId} (#3945)
- Fix: service path ignored in GET /v2/registrations/{regId} (#3945)
- Fix: legacyForwarding rendering in GET /v2/registrations and GET /v2/registrations/{regId} calls (#3944)
- Fix: deleted attribute incorrectly included in notifications (#3956)
- Fix: return 400 instead of 500 when GeoJSON syntax error occur in ?options=upsert operations (#3949)
- Fix: change -mqttMaxAge from seconds to minutes
- Fix: ForwardingError alarm included in log summary traces
- Fix: lastFailure, lastSuccess and status correct management in MQTT subscriptions
- Hardening: improve MQTT connection logic
- Hardening: upgrade libmosquitto dependency from 2.0.11 to 2.0.12
3.2.0 (September 7th, 2021)
- Add: MQTT notifications (#3001)
- Fix: TextUnrestricted recursively applies to JSON objects and array (#3867)
- Fix: onlyChangedAttrs set to true not working after csubs cache refresh (#3906)
- Fix: PATCH /v2/entities/ID/attrs error doesn't provide info about offending attributes (#2933)
- Fix: -key and -cert files loading (was causing valgrind errors) (#3925)
- Fix: return 400 instead of 500 when GeoJSON syntax error occur (#3347)
- Fix: 400 BadRequest when attempting to DELETE with multi-servicepath or SP with '/#' (instead of silently failing) (#3071)
- Hardening: improve notification pool worker thread termination logic (#3877)
- Remove: deprecated feature initial notification upon subscription creation or update
3.1.0 (June 9th, 2021)
- Add: skipForwarding option in queries to avoid request forwarding to Context Provider (#3851)
- Add: per-service reserved queues/pools to threadpool notification mode (#3843) (experimental feature)
- Add: support to null in DateTime attributes and metadata (#3533)
- Add: support to null in geo:json, geo:point, geo:line, geo:box and geo:polygon attributes (#3533)
- Add: new alarm (id number 6) for forwarding errors (#1794)
- Add: null as allowed value for httpCustom.notification.payload to avoid sending payloads in custom notification (#3272)
- Add: statistic counter re-worked, based in NGSIv2 requests (#3805)
- Add: counter for requests without payload in statistics (#1400)
- Add: debug tracelevels for notifications payload request/response in logs (#2895)
- Fix: use "Forwarding Error" instead of "Other Error" in WARN traces (#1794)
- Fix: potential crash (although under very rare situations) in log trace code
- Fix: support attributes and metadata starting with dollar sign ($) (#3841)
- Fix: avoid duplicating forwarded query requests to CPrs in some cases (this may cause illegal JSON with duplicated attribute keys in the response to clients at the end)
- Fix: support for single entity query forwarding with global registration idPattern (#3463, partially)
- Deprecated: initial notification upon subscription creation or update (along with skipInitialNotification option)
3.0.0 (April 12th, 2021)
- Reference distribution changed from RHEL/CentOS 7 to RHEL/CentOS 8 (#3764)
- Reference MongoDB version changed from 3.6 to 4.4
- Add: SCRAM-SHA-256 as allowed mechanism in -dbAuthMech (#3782)
- Add: tlsAllowInvalidCertificates=true to mongo connection URI along with tls=true when -dbSSL switch is used
- Add: new CLI parameter -dbDisableRetryWrites to set retryWrite parameter to false in DB connections (#3797)
- Add: machine information in GET /version
- Fix: response rightly 500 Internal Error when DB query fails (previously 200 OK with empty entities array was returned)
- Fix: -logForHumans traces including full timestamp information
- Fix: PATCH update operation return right error code, when multiple service paths or service path /# is used (#3640)
- Fix: avoid 500 Internal Error when simulataneous entity creation takes place with -reqMutextPolicy none (either with and without ?options=upsert) (#3821)
- Hardening: MongoDB connection logic largely rewritten
- Hardening: upgrade Mongo driver dependency form C++ legacy-1.1.2 to C 1.17.4 (#3132, #3797, #3695 and probably #3717, #3778, #3326)
- Remove: MONGODB-CR as -dbAuthMech
2.6.0 (March 10th, 2021)
- Add: supportedForwardingMode full support according to NGSIv2 spec (#3106)
- Add: -disableFileLog CLI parameter (ORION_DISABLE_FILE_LOG env var) to prevent Orion from logging into a file
- Add: support 'true' and 'false' literals (in addition to 'TRUE' and 'FALSE') in flag-like env vars
- Fix: crash on MHD_REQUEST_TERMINATED_CLIENT_ABORT situations (#3738)
- Fix: avoid over-requesting to CPrs attributes that has been filtered out (#3745)
- Fix: avoid spureous entities spurious entities (eg. '{"id": "E", "type": "T"}') in GET /v2/entities responses
- Fix: create normal files as 644 permissions for assure backup tools take configuration files in RPM
- Upgrade Dockerfile base image from centos7.7.1908 to centos7.9.2009
- Disable logging to /tmp/contextBroker.log file in Dockerfile
- Remove: NGSIv1 context availability subscriptions
2.5.0 (October 30th, 2020)
- Add: milliseconds support in DateTime attributes and metadata, included dateCreated and dateModified built-ins (#432, #2670, #3412, #3666)
- ADD: re-worked INFO log level, simplifying traces and making them much more useful (#3694)
- Add: library version information in GET /version (#3681)
- Add: CLI option -logLineMaxSize (#3694)
- Add: CLI option -logInfoPayloadMaxSize (#3694)
- Fix: potencial race condition related with DateTime attributes due to the usage of thread unsafe functions
- Fix: screen log output using the same format for time= than the one used in log files (ISO8601)
- Fix: improve error response when incorrect URL used (#2231)
- Fix: POST /v2/registrations allows forbidden attribute names in NGSIv2 (#3468)
- Fix: log WARN about insecureNotifications mode (#3013)
- Fix: avoid creating orion database in -multiservice mode (#3179)
- Fix: wrong 204 code was responded (instead of 501) when using idPattern in POST /v2/op/update operation (#3427)
- Fix: wrong 413 error when passing from 0 locations to 1 in entity update (#3706)
- Fix: changed the name of pretty much all the environment variables for Orion. E.g. adding prefix 'ORION_'
- Hardening: upgrade rapidjson dependecy from 1.0.2 to 1.1.0
- Hardening: upgrade microhttpd dependency from 0.9.48 to 0.9.70
2.4.0 (March 31st, 2020)
- Add: TextUnrestricted attribute type to avoid forbidden chars checking (#3550)
- Add: notification flow control on update (#3568)
- Fix: crash when using null character in some NGSIv1 operations
- Fix: crash when using attributes with invalid JSON having more than one "value" keys (#3603)
- Hardening: add deepness control to compound attribute and metadata value (max 50 levels) (related with #3605, #3606 and #3608)
- Hardening: NULL control in some strdup and calloc cases (very unlikely, but theoretically possible) (#3578)
- Hardening: avoid crash in the unlikely case MongoDB get databases operations fails in csubs cache refresh logic (#3456, partly)
- Hardening: refactor mongo connection logic at startup to make it simpler
- Change centos7.6.1810 to centos7.7.1908 in Dockerfile
2.3.0 (November 5th, 2019)
- Add: basic NGSIv2 queries and updates forwarding (#3068)
- Add: idPattern '.*' support in in NGSIv2 registrations (#3458)
- Add: Notify only attributes that change (#3190)
- Add: CLI option -inReqPayloadMaxSize to let users decide the maximum allowed size of incoming request payloads (#3492)
- Add: CLI option -outReqMsgMaxSize to let users decide the maximum allowed total size of any outgoing request message (for forwards and notifications) (#3492)
- Add: -dbAuthMech CLI parameter to set MongoDB authentication mechanism (#2987)
- Add: -dbAuthDb CLI parameter to set MongoDB authentication database
- Add: -dbSSL to enable SSL in the connection to DB (#3524)
- Fix: The 'Allow:' header for the service /v2/registrations had the incorrect value of "Allow: POST". The correct value is: "Allow: GET, POST"
- Fix: incorrectly loging update subscription traces in ERROR log level (#3531)
- Fix: set default MongoDB authentication mechanism to SCRAM-SHA-1 (old MONGODB-CR was deprecated time ago)
- Fix: abort on startup when MongoDB authentication fails to avoid starting a useless Context Broker
- Fix: change max -dbhost length from 64 to 256 (to cope with long replica set strings using full domain names)
- Hardening: avoid regex when possible in servicePath token in DB queries (#3505)
- Hardening: avoid $in vectors with only one element in servicePath token in DB queries (#3505)
- Hardening: avoid mono-item $or array in entity query (#3505)
- Hardening: avoid unneeded _id.type: {$exists: true} in entity queries that already include _id.type (#3505)
- Hardening: avoid _id.id: /.*/ and _id.type: /.*/ in entity queries, as removing the token has the same effect (#3505)
- Hardening: avoid unneeded {$exists: true} and mono-item arrays (as much as posible) in attribute queries (#3505)
- Remove: support to entities without service path in DB (no one of so ancient data model should remain today)
- Remove: deprecated Rush support
2.2.0 (February 21st, 2019)
- Add: skipInitialNotification URI param option to make initial notification in subscriptions configurable (#920)
- Add: forcedUpdate URI param option to always trigger notifications, no matter if actual update or not (#3389)
- Add: log notification HTTP response (as INFO for 2xx or WARN for other codes)
- Add: notification.lastFailureReason field in subscriptions to get the reason of the last notification failure
- Add: notification.lastSuccessCode field in subscriptions to get the HTTP responde code of the last successful notification
- Fix: NGSIv1 updates with geo:line|box|polygon|json removes location DB field of NGSIv2-located entities (#3442)
- Fix: specify notification/forwarding error cause in log messages (#3077)
- Fix: from=, corr=, srv=, subsrv= correctly propagated to logs in notifications (#3073)
- Fix: avoid "pending" fields in logs
- Fix: use "<none>" for srv= and subsrv= in logs when service/subservice header is not provided
- Fix: bug in notification alarm raising in -notificationMode transient and persistent
- Remove: deprecated feature ID metadata (and associated NGSIv1 operations)
2.1.0 (December 19th, 2018)
- Add: Oneshot Subscription (#3189)
- Add: support to MongoDB 3.6 (#3070)
- Fix: problems rendering structured attribute values when forwarded queries are involved (#3162, #3363, #3282)
- Fix: NGSIv2-NGSIv1 location metadata issues (#3122)
- Fix: wrong inclusion of "location" metadata in geo:json notifications (#3045)
- Fix: metadata filter was lost during csub cache refresh (#3290)
- Fix: NGSIv1-like error responses were used in some NGSIv2 operations
- Fix: cache sem is not taken before subCacheItemLookup() call (#2882)
- Fix: wrong Runtime Error logs on GET /v2/registrations and GET /v2/registrations/{id} calls (#3375)
- Deprecate: Rush support (along with -rush CLI parameter)
- Remove: isDomain field in NGSIv1 registrations (it was never used)
2.0.0 (September 28th, 2018)
- Fix: GET /v2/subscriptions and GET /v2/subscriptions/{id} crashes for permanent subscriptions created before version 1.13.0 (#3256)
- Fix: correct processing of JSON special characters (such as \n) in NGSIv2 rendering (#3280, #2938)
- Fix: correct error payload using errorCode (previously orionError was used) in POST /v1/queryContext and POST /v1/updateContext in some cases
- Fix: bug in metadata compound value rendering in NGSIv2 (sometimes "toplevel" key was wrongly inserted in the resulting JSON object)
- Fix: missing or empty metadata values were not allowed in NGSIv2 create/update operations (#3121)
- Fix: default types for entities and attributes in NGSIv2 was wrongly using "none" in some cases
- Fix: with NGSIv2 replace operations the geolocalization field is inconsistent in DB (#1142, #3167)
- Fix: duplicated attribute/metadata keys in JSON response in some cases for dateCreated/dateModified/actionType
- Fix: proper management of user attributes/metadata which name matches the one of a builtin (the user defined shadows the builtin for rendering but not for filtering)
- Fix: pre-update metadata content included in notifications (and it shouldn't) (#3310)
- Fix: duplicated items in ?attrs and ?metadata URI params (and "attrs" and "metadata" in POST /v2/op/query and subscriptions) cause duplicated keys in responses/notifications (#3311)
- Fix: dateCreated and dateModified included in initial notification (#3182)
- Hardening: modification of the URL parsing mechanism, making it more efficient, and the source code easier to follow (#3109, step 1)
- Hardening: refactor NGSIv2 rendering code (throughput increase up to 33%/365% in entities/subscriptions rendering intensive scenarios) (#1298)
- Hardening: Mongo driver now compiled using --use-sasl-client --ssl to enable proper DB authentication mechanisms
- Deprecated: NGSIv1 API (along with related CLI parameters: -strictNgsiv1Ids and -ngsiv1Autocast)
1.15.0 (July 16th, 2018)
- Add: upsert option for the POST /v2/entities operation (#3215)
- Add: transient entities functionality (new NGSIv2 builtin attribute: dateExpires) (#3000)
- Add: "attrs" field in POST /v2/op/query (making "attributes" obsolete) (#2604)
- Add: "expression" field in POST /v2/op/query (#2706)
- Fix: large integer wrong rendering in responses (#2603, #2425, #2506)
- Remove: "scopes" field in POST /v2/op/query (#2706)
1.14.0 (June 15th, 2018)
- Add: support for APIv2 notifications (POST /v2/op/notify), which opens up for true APIv2 federation (#2986)
- Add: camelCase actionTypes in POST /v2/op/update (append, appendStrict, update, delete and replace) (#2721)
- Fix: bug having entities without attibutes AND matching registrations made the attr-less entity not be returned by GET /v2/entities (#3176)
- Fix: bug when using "legacy" format for custom v2 notifications (#3154)
- Fix: check for providers is done only in UPDATE or REPLACE actionType case in update entity logic (#2874)
- Fix: wrong 404 Not Found responses when updating attribute using NGSIv2 and CB forwards it correctly (#2871)
1.13.0 (April 16th, 2018)
- Add: support for GET /v2/registrations (#3005)
- Add: support for GET /v2/registrations/<registration-id> (#3008)
- Add: support for POST /v2/registrations to create registrations in APIv2 (#3004)
- Add: support for DELETE /v2/registrations/<registration-id> (#3006)
- Add: support for CORS requests for /v2/registrations and /v2/registrations/<registration-id> (#3049)
- Hardening: refactor request routing logic (#3109, step 1)
- Bug that may lead contextBroker to crash when passing null character "\u0000" with ID parameter in query context payload (#3119)
- Add: CORS Preflight Requests support for /version (#3066)
- Deprecated: ID metadata (and associated NGSIv1 operations)
1.12.0 (February 21st, 2018)
- Add: support for entity id and type in orderBy parameter (#2934)
- Add: NGSIv1 autocast for numbers, booleans and dates (using flag -ngsiv1Autocast) (#3112)
1.11.0 (February 14th, 2018)
- Reference distribution changed from RHEL/CentOS 6 to RHEL/CentOS 7
- Add: new BROKER_LOG_LEVEL variable at /etc/config/contextBroker to set log level
- Add: new GENERATE_COREDUMP variable at /etc/config/contextBroker to enable core generation and archiving (useful for debugging)
- Add: handler for SIGHUP termination signal
- Fix: using SIGTERM instead of SIGHUP for stopping broker in init.d service script
- Fix: Invalid description in POST /op/query error response (#2991)
- Fix: Bug that may cause contextBroker to crash when passing inappropriate parameter in query context payload (#3055)
- Fix: Correct treatment of PID-file (#3075)
1.10.0 (December 11th, 2017)
- Add: CORS Preflight Requests support for all NGSIv2 resources, -corsMaxAge switch, CORS exposed headers (#501, #3030)
- Fix: null not working in q/mq filter in subscriptions (#2998)
- Fix: case-sensitive header duplication (e.g. "Content-Type" and "Content-type") in custom notifications (#2893)
- Fix: bug in GTE and LTE operations in query filters (q/mq), both for GET operations and subscriptions (#2995)
- Fix: Wrong "max one service-path allowed for subscriptions" in NGSIv2 subscription operation (#2948)
1.9.0 (October 19th, 2017)
- Add: release_date and doc fields are added to the GET /version output to align with FIWARE scheme (#2970)
- Fix: missing lastSuccess/lastFailure associated to initial notification on subscription creation some times when csub cache is in use (#2974)
- Fix: several invalid memory accesses (based on a workaround, not a definitive solution, see issue #2994)
- Fix: broken JSON due to unscaped quotes (") in NGSIv2 error description field (#2955)
- Hardening: NGSIv1 responses don't use pretty-print JSON format any longer, as NGSIv2 responses work (potentially saving around 50% size) (#2760)
1.8.0 (September 11th, 2017)
- Add: self-notification loop protection, based on Fiware-Correlator and Ngsiv2-AttrsFormat headers and lastCorrelator field at DB (#2937)
- Add: Fiware-Correlator and NgsiV2-AttrsFormat headers cannot be overwritten by the custom notification logic (#2937)
- Fix: several invalid memory accesses
- Fix: bug in parseArg lib that may cause problem printing the error message for wrong CLI usage (#2926)
- Fix: bug in variable substitution of custom notifications that limited the size of the payload of a custom notification to 1024 bytes (new limit: 8MB)
- Fix: bug in custom notifications making counters and timestamps not being updated (affected subscription fields: lastSuccess, lastFailure, lastNotifiction, count)
- Fix: "request payload too large" (>1MB) as Bad Input alarm (WARN log level)
- Hardening: Several changes in argument passing in mongoBackend library to add 'const' in references to objects that are not altered by the function
- Hardening: Several changes in argument passing in mongoBackend library to avoid passing entire objects on the stack, from "X x" to "const X& x"
- Hardening: Mongo driver migrated to legacy-1.1.2 (several bugfixes in the legacy-1.0.7 to legacy-1.1.2 delta)
1.7.0 (February 8th, 2017)
- Add: HTTPS native notifications (#706), fixing at the same time issue #2844
- Add: new option to accept self-signed certifications used by HTTPS notification endpoints: -insecureNotif (#706)
- Add: metrics REST API (#2750)
- Add: new option to set the timeout for REST request: -reqTimeout (#2762)
- Add: the string "ISO6801" can now be used as an alias for "DateTime" as type for attributes and metadata (#2654)
- Add: new CLI '-disableMetrics' to disable metrics (#2750)
- Add: support for quotes (') in string filters to let attribute/metadata names contain dots (#2805)
- Add: Support for null values in string filters (#2359)
- Fix: libmicrohttpd now uses poll()/epoll() and not select() so fds greater than 1023 can be used for incoming connections (#2724, #2166)
- Fix: modified the upper limit for CLI '-maxConnections', from 1020 to UNLIMITED
- Fix: proper 500 Internal Server Error response with descriptive text when "sort fail" at DB occur (#2752)
- Fix: giving a descriptive response with payload, without reading the request for too big payloads (#2761)
- Fix: check for forbidden chars in entity type and id in POST /v2/op/query request (#2819)
- Fix: removed check for forbidden chars in URI param typePattern (#2819)
- Fix: checking for forbidden characters inside the components of string filters (#1994)
- Fix: including Service-Path in notifications also when the service path is the default one (/). For notifications due to 'standard subscriptions', notifications due to 'custom subscriptions' already work this way (#2584)
- Fix: NGSIv1 updateContext APPEND on existing geo:point attributes (and probably other geo: attributes) failing to update location (#2770)
- Fix: bug when tenants are over 44 bytes long (#2811)
- Fix: pattern matching in q/mq: pattern is always a string (#2226)
- Fix: Partial sanity check for custom url, only if the url contains no replacements using ${xxx} (#2280, #2279)
- Fix: Stricter validity check of URL before accepting a subscription (#2009)
- Fix: if entity::type is given but as an empty string, in payload of POST /v2/subscriptions or PATCH /v2/subscriptions/{sub}, an error is returned (#1985)
- Fix: more intelligent, quote-aware, operator lookup inside q/mq string filters (#2452)
- Fix: weird 'md: { }' added with some update operations (#2831)
- Fix: attribute names that include ':' now are supported, with the single-quote syntax. E.g. q='devices:location' (#2452)
- Fix: admin requests (such as GET /version) with errors now return '400 Bad Request', not '200 OK'
- Fix: attempt to create an entity with an error in service path (and probably more types of errors) now returns '400 Bad Request', not '200 OK' (#2763)
- Fix: not calling regfree when regcomp fails. Potential fix for a crash (#2769)
- Fix: wrongly overlogging metadata abscense in csub docs as Runtime Error (#2796)
- Fix: if HTTP header Content-Length contains a value above the maximum payload size, an error is returned and the message is not read (#2761)
- Add: one more semaphore (the metrics semaphore) to the semWait block in GET /statistics and to the list in GET /admin/sem (#2750)
- Fix: no longer accepting a service path with an empty component (e.g. /comp1//comp3) (#2772)
- Fix: bug in notification queue statistics, "in" value (#2744)
- Fix: Accept header errors in NGSIv2 requests were incorrectly being rendered using "OrionError" element (#2765)
1.6.0 (December 5th, 2016)
- Add: notification failure/recovery information included in subscriptions (#1960)
- Add: support ISO8601 timezones at DateTime attributes and metadata creation/update time and filters (#2632)
- Add: support for partial representation format at DateTime attributes and metadata creation/update and filters (#2631)
- Add: New CLI option: '-logForHumans', to make the screen log output readable for humans (#2609)
- Fix: threadpool mode not actually used for custom notifications, even if -notificationMode is set so (#2622)
- Fix: -logAppend as default in configuration for RPM package (#2637)
- Fix: Default log output for stdout is now the same format as in the log file. Use new CLI option '-logForHumans' to modify this. (#2609)
- Fix: several bugs related with field validation in POST /v2/op/update operation (#2653, #2658, #2659, #2661, #2664, #2665, #2666, #2673, #2674, #2675, #2676, #2681, #2682, #2685)
- Fix: subscription PATCH not working for notification.attrs and notification.exceptAttrs subfields (#2647)
- Fix: PATCH attr wrongly adding metadata item instead of replacing (#1788)
- Fix: POST /v2/op/update with empty entities vector makes the broker to crash (#2720)
- Fix: allow empty elements in Accept header (useless, but allowed by HTTP RFC) (#2722)
- Fix: NGSIv1 queries are wrongly interpreting entity type as a pattern (#2723)
- Fix: improving performance avoiding unneeded calls to gettid in log library (#2716)
1.5.0 (October 31st, 2016)
- Add: Added URI parameter metadata=metadata-name-list for NGSIv2 retrieve requests (#2544)
- Add: Added 'metadata' as part of the payload for POST /v2/op/query (#2544)
- Add: implement 'attrs' (and 'attributes' for POST /v2/op/query) in the same way than 'metadata', including special meaning of '*' (#2455)
- Add: metadata timestamps (dateCreated + dateModified) for attributes (as for entities), including filtering capabilities (#876)
- Add: new value for URI param 'options' (options=noAttrDetail) for NGSIv2 queries to exclude attribute detail, making the query faster (#2073)
- Fix: wrong type in previousValue metadata for notifications triggered by PUT /v2/entities/{id}/attrs/{name}/value (#2553)
- Fix: giving a semaphore in case of mongo exception, which was causing the broker to be unable to serve requests involving the database, and possibly even to crash due to lack of resources (#2571)
- Fix: avoid unused attribute type detail in NGSIv1 queries (which was making the queries slower) (#2073)
- Fix: more accurate actionType in notifications (#2549)
- Fix: over-logging of Runtime Error traces not representing actual error (#2597)
- Fix: support attributes with double underscore as part of the name (#2453)
- Fix: GIT_REV_ORION Docker for master branch needs be master
- Deprecated: dateCreated and dateModified as valid 'options' in NGSIv2 (use 'attrs' instead) (#2455 and #2450)
- Fix: threadpool mode was not actually used, even if -notificationMode is set so; this fix solves the problem for not-custom notifications (partial fix for #2622)
1.4.0 (September 30th, 2016)
- Add: notification metadata previousValue and actionType (except 'delete') (#2507)
- Add: filtering metadata in notifications (#2507)
- Fix: removed spurious decimals in metadata numbers in NGSIv1 rendering (a follow up of #2176)
- Fix: wrong attributes included in notifications at subscription update time in some cases (both in blacklist and not blacklist cases)
- Fix: csub cache wrong deletion of subscription at subscription update time when new subscription has empty condition attributes list
- Fix: crash when creating entity with metadata when subscription is in place with "mq" on a different metadata (#2496)
- Fix: correct rendering of metadata compound values when a vector (bugfix for issue #1068)
- Fix: crash with request with empty URI PATH (#2527)
- Fix: supporting DateTime filters for metadata (#2443, #2445)
- Fix: wrong matching in metadata existence and not existence filters with compounds
- Fix: missing expression sub-fields (q, etc.) in csubs makes Orion to crash
- Hardening: ensure to use type oriented functions when getting data from DB (safer, but more verbose in error log if DB is not perfectly aligned with what Orion is expecting)
1.3.0 (September 2nd, 2016)
- Add: support for geometry, coords and georel in NGSIv2 subscriptions (AKA geo-subscriptions) (#1678)
- Add: Type pattern for subscriptions (#1853)
- Add: New param 'mq' (both in URI param for list all entities operation and expression sub-field in subscriptions) for matching in metadata (#1156)
- Add: FIWARE::StringQuery::Metadata scope (#1156)
- Add: q-string filters for compound values of attributes, both for queries and subscriptions (#1156)
- Add: mq-string filters for compound values of metadata, both for queries and subscriptions (#1156)
- Add: accepting compound values for metadatas (#1068)
- Add: GET /admin/log operation to retrieve log level (#2352)
- Add: new operation: GET /admin/sem, to see list of the brokers semaphores (#2145)
- Fix: NGSIv2 subscriptions payload validation (#1946, #1964, #1965, #1967, #1973, #1974, #1975, #1979, #1980, #1981, #1983, #1984, #1986, #1988, #1999, #2000, #2006, #2007, #2018, #2093, #2095, #2099, #2100, #2184)
- Fix: Return error on NGSIv1 register requests with entity isPattern set to "true" (#2332)
- Fix: UTC as time in log file (#2232)
- Fix: Removed capping in NGSIv2 update forwarding (#2193)
- Fix: In some cases, compound attribute values were forwarded as empty strings (#2237)
- Fix: attribute overwritten when JSON value used in PUT /v2/entities/<eId>/attrs/<attrName>/values (#2246 and #2248)
- Fix: error returned if a NGSIv2 subscription contains no id nor idPattern (#1939)
- Fix: subscription equal filter evaluation on update context logic (#2222)
- Fix: capturing invalid id patterns at json parse time for v2 subscriptions - this bug made the broker crash when receiving invalid id-patterns (#2257)
- Fix: out-of-NGSI service not found error now using 400 Bad Request HTTP response code (instead of 200 OK). Error message has been unified to "service not found" in all cases (#1887).
- Fix: using 404 Not Found - PartialUpdate error when NGSIv2 forwarded update is partially done (previously 204 No Content was used, without providing actual informaton about the partial update)
- Fix: CPrs responding with not NGSIv1-compliant messages was progressed to clients as 204 Not Content in NGSIv2 update forward scenarios (now responding with 404 Not Found)
- Fix: NGSIv2 "attribute already exists" error case was wrongly using 400 Bad Request, now it uses 422 Unprocessable Entity (according to rules defined in #1286)
- Fix: NGSIv2 "duplicated attribute (in request)" error case was wronly using 422 Unprocessable Entity, now it uses 400 Bad Request (according to rules defined in #1286)
- Fix: NGSIv2 "entity does not have such attribute" error case was wrongly using "requested entity has not been found" descriptions (#1890)
- Fix: missing error payload for NotFound error in 'PUT /v2/entities/<eId>/attrs/<attrName>' and 'PUT /v2/entities/<eId>/attrs/<attrName>/value' operations (#1909)
- Fix: missing error payload for TooManyResults error in 'DELETE /v2/entities/<eId>' operation (#1346)
- Fix: correctly rending as JSON error responses that were being rendered as plain text (#1989, #1991)
- Fix: NGSIv2 "InvalidModification" errors changed to "Unprocessable" (according to rules defined in #1286)
- Fix: Using default values for types of Entities, Attributes, and Metadata aligned with the type names used by schema.org (#2223)
- Fix: Allowing trailing semicolon in a string filter, but only one (#2086)
- Fix: NGSIv2 geoquery syntax errors using 400 Bad Request instead of 422 Unprocessable Entity (according to rules defined in #1286)
- Fix: NGSIv2 URI PATH must be all in lowercase, otherwise "service not found" (#2057)
- Fix: A bug fixed in URI param 'q', avoiding false matches when using string match operator (~=) that matches AND some operator that does not match.
- Fix: no longer accepting 'keyValues-style' values for metadatas (e.g. "metadata": { "m1": 6 } )
- Fix: GET /v2/subscriptions/subId error for non existing subscriptions (now using 404 Not Found, previously using 400 Bad Request)
- Fix: 472 Unknown returned as HTTP status code by POST /v2/op/update in some cases (now using 404 Not Found).
- Fix: Correctly returning error on present but empty attribute types in PATCH v2/entites/{id} operation (#1785)
- Fix: Error returned on encountering non-existing attributes in PATCH /v2/entities/<id>/attrs (#1784)
- Fix: Fixed a bug about string lists in URI parameter 'q' (strings treated as numbers, if possible. E.g. '123' => 123)
- Fix: use X-Real-IP header as preferred option for from= field in log traces (#2353)
- Fix: use op= instead of function= in log traces (along with moving the file/line identification from msg= to op=) (#2353)
- Fix: reorder field in log traces lo align with IoTP Operations requirements (#2353)
- Fix: using WARN log level instead of WARNING log level to align with IoTP Operations requirements (#2353)
- Fix: Fixed metadata rendering in NGSIv1, so that the JSON data type is taken into account and not empty string is returned for non-string values (#1068, just a part of it)
- Fix: Fixed a bug about lists in URI parameter 'q' (last list item was skipped)
- Fix: render float values with 9 digits precision in all cases, avoding spurious decimals (#2207, #2176, #2383)
- Fix: Error payload returned on encountering non-existing entity/attribute in PUT /v2/entities/<entity-id>/attrs/<attr-name> (#1360)
- Fix: Added citation marks surrounding strings as response in text/plain.
- Fix: Return NGSIv2 error if citation-mark is missing in PUT /v2/entities/{id}/attrs/{attrName}/value payload for plain text (previously it was NGSIv1 error format) (#2386)
- Fix: invalid regex patterns detection (#968)
- Fix: Better error returned on invalid geoquery (#2174)
- Fix: Better error returned on attribute not found in GET /v2/entities/<entity-id>/attrs/<attr-name>/value (#2220)
- Fix: Metadata identification based on just name instead of name+type (metadata representation at DB changed from vector to object) (#1112)
- Fix: Bug in log level configuration via REST fixed, and log levels in broker modified (#2419)
- Fix: Distinguish between strings and numbers in q string filter (#1129)
- Fix: proper response for 'GET /v2/entities/<id>?attrs=<attrName>' and 'GET /v2/entities/<id>/attrs?attrs=<attrName>' when <attrName> doesn't exist (#2241)
- Fix: Rendering problems in metadata vector (#2446)
- Fix: correct error response for missing value in URI param in /admin/ requests (#2420)
- Fix: In error responses for ngsi9 registrations, the duration is no longer rendered.
- Fix: Do not allow forbidden chars in description for subscription (#2308)
- Fix: Correct error returned when trying to replace a non-existing attribute in PUT /v2/entities/<entity-id>/attrs/<attr-name> (#2221)
- Fix: Empty string detection for entity id, entity type and attribute name in NGSIv2 request URLs (#1426, #1487)
- Fix: Trailing slashes in URI path no longer silently removed, but considered and giving adequate error responses
- Fix: Initial notifications were counted twice when running with subscription cache (which gave erroneous timesSent in GET /v2/subscriptions/<subId>)
- Fix: Avoid rendering at the same time id and idPattern fields in NGSIv2 subscriptions
- Fix: Error returned on GET/DELETE requests specifying Content-Type (#2128)
- Fix: Error responses with '405 Method Not Allowed' now return payload to describe the error, for v2 requests only (#2075, #2078 and #2083)
- Fix: Implemented more sofisticated HTTP Accept Header handling (Issues #1037, #1849, #1886, #2175, and #2208)
- Hardening: csubs data model simplification, using a list of attributes for "conditions" instead of a complex structure (#1851)
1.2.0 (June 2nd, 2016)
- Add: notification attributes blacklist for NGSIv2 notifications (#2064)
- Add: NGSIv2 custom notifications (#2015)
- Add: -disableCustomNotification CLI to disable custom notification functionality (#2135)
- Add: 'values' option for GET /v2/types operation (#1170)
- Add: ':' as alias for '==' in the NGSIv2 Simple Query Language (#1903)
- Fix: NGSIv2 header name change: X-Total-Count -> Fiware-Total-Count (#2124)
- Fix: NGSIv2 header name change: X-Ngsiv2-AttrsFormat -> Ngsiv2-AttrsFormat (#2124)
- Fix: crash in multi-token query string when attribute value regex comes in first place (#2164)
- Fix: crash when updating entities which corresponding document at DB is somehow large (#2112)
- Fix: several fixes related with 'attrsFormat' subscription field in NGSIv2 API (#2133, #2163)
- Fix: bug disabling throttling when creating a v2 subscription (#2114)
- Fix: wrong text payload when subscription string filter error occurs (#2106)
- Fix: total count return in GET /v2/types operation (#2115)
- Fix: -noCache now avoids populating cache on create/update subscription operations (#2147)
- Fix: accessing to csub cache in update subscription logic to update count and lastNotification without taking semaphore (#2146)
- Fix: potential bug in internal logic at NGSIv2 GET subscription operations, possibly provoking crashes
- Fix: New keyword "DateTime" to replace "date" for attributes that express date/time (#2198)
- Fix: Improved error text "ContentLengthRequired" to replace "LengthRequired" (#2198)
- Fix: POST /v2/op/query was not supporting FIWARE::Location::NGSIv2 filters
- Fix: Expression lost after refreshing subscription cache (#2202)
- Fix: Avoided a possible infinite loop in sub-cache synchronization function (subscriptions stopped working due to this bug)
- Deprecated: /ngsi10 and /ngsi9 as URL path prefixes
- Fix: throttling set to zero (#2030)
1.1.0 (May 3rd, 2016)
- Add: NGSIv2 notifications (#1875)
- Add: ~= operator to simple query language in order to implement attribute value patterns (#978)
- Add: string support in <, >, <=, >= and range filters (#1945)
- Add: support for geo:line, geo:box and geo:polygon types as ways of specifying entity location in NGSIv2 (#1038)
- Add: GeoJSON support as a way of specifying entity location in NGSIv2 (#1920)
- Add: Add permanent subscriptions (#1949)
- Add: pause subscriptions using the NGSIv2 API (#1328)
- Add: description field for NGSIv2 subscriptions (#1918)
- Add: change/add path /entities/{id}/attrs (#2028)
- Add: Correlator as HTTP header and in log file (#1916)
- Fix: updates on default service path entity causes wrong update in same id/type entity in not-default service path (#1956)
- Fix: crash with some invalid subscriptions in NGSIv2 API (#1947, #1972)
- Fix: csub cache sync logic not persisting lastNotification when the field doesn't initially exist in DB
- Fix: csub cache at mongoBackend update context subscription logic wrongly setting expiration with current time, ignoring actual expires/duration in the request
- Fix: GET /v2/types response payload, from key-map to array (#1832)
- Fix: GET /v2/types response payload, now using array for attribute types (#1636)
- Fix: using "/#" as default service path instead of "/" in subscriptions (#1961, #2024)
- Fix: POST /v2/subscriptions, attributes in notification are optional (#1952)
- Fix: no longer considering service (tenant) for subscriptions when broker is started without '-multitenant' CLI option (#1898)
- Fix: NGSIv2 subscription payload (#2014)
- Fix: right X-Total-Count in GET /v2/types operation (#2046)
- Fix: right 404 Not Found response in GET /v2/types/{type} operation when type doesn't exist (#2056)
- Fix: 'null' attribute value not surrounded by quotes (") in NGSIv1 renderings (#2058)
- Fix: non-string attribute values were breaking JSON in attributeFormat=object mode (#2058)
- Fix: JSON response in log management operations
- Fix: capturing invalid URLs at subscription time (and returning error response) that otherwise would make Orion crash (#2092)
- Deprecate: "location" metadata to specify entity location
1.0.0 (March 29th, 2016)
- Add: new value for URI param 'options': unique - like 'values', but avoiding duplicates (Issue #1050)
- Add: PUT /admin/log?level=XXX to change log level in run-time (Issue #1913)
- Add: check min length for IDs in v2 (Issue #1836)
- Fix: over-logging at error level due to not checking field existente in BSON objects
- Fix: aggregating entities without type and type "" in same entry at GET entity types operation
- Fix: DB error relog done at ERROR level (previously it was using WARNING)
- Fix: check for invalid chars in attribute type (Issue #1847, #1844)
- Fix: check for field too long in attribute type (Issue #1845)
- Fix: check for metadatas with empty name (Issue #1438)
- Fix: accepting backslash-slash in JSON v1 payload (Issue #1852)
- Fix: PATCH /v2/entities correct interpretaion of null value and missing type in payload
- Fix: PATCH /v2/entities missing value field (Issue #1789)
- Fix: GET /v2/entities/id/attrs/name/value for type date (Issue #1885)
- Fix: PUT /v2/entities/id/attrs/name/value forbidden chars (JSON) (Issue #1905)
- Fix: PUT /v2/entities/id/attrs/name/value changing type to 'none' (text/plain) (Issue #1904)
- Hardening: use safeMongo get*Field() methods in places not previously using them (mainly in csubs cache library)
- Remove: deprecated functionality related with ONTIMEINTERVAL subscriptions
- Remove: XML support (deprecated functionality) (Issue #1862)
0.28.0 (February 29th, 2016)
- Add: implemented new operation: POST /v2/op/query (Issue #1080)
- Add: implemented new operation: POST /v2/op/update (Issue #1715)
- Add: orderBy URI param in NGSIv2 queries to sort entities by attribute, entity dates or proximity (Issue #1103)
- Add: orderBy URI param in NGSIv1 queries to sort entities by attribute or entity dates (Issue #1103)
- Add: options=values mode for entity queries in NGSIV2 (Issue #1049)
- Add: NGSIv2 URI param 'georel' (along with 'geometry' and 'coords') proper support (Issue #1677)
- Add: scope FIWARE::Location::NGSIv2 to allow using NGSIv2 geo-queries also with NGSIv1 (Issue #1677)
- Add: support for geo:point type as a way of specifying location attribute in NGSIv2 (Issue #1038)
- Add: date support in attribute values and q filters (Issue #1039)
- Add: dateCreated and dateModified options to get entity creation and modification times as "virtual" attributes (Issue #876)
- Add: ?type param for GET entity in v2 (Issue #915, #972, #990, #998)
- Add: ?type param for DELETE entity in v2 (Issue #986, #994)
- Add: ?type param for PATCH entity in v2 (Issue #980)
- Add: ?type param for POST entity in v2 (Issue #982, #984)
- Add: ?type param for PUT entity in v2 (Issue #988, #992, #1000)
- Add: ?type URL parameter in Location header upon entity creation in NGSIv2 (Issue #1765)
- Fix: error level traces ignoring -logLevel NONE
- Fix: wrong over-logging at error level updating attributes having metadata without type
- Fix: '+' supported in entity ids and names in URLs (Issue #1675)
- Fix: libmicrohttpd 0.9.48 included in contextBroker as static lib (previous Orion versions used 0.9.22 as dynamic library) (Issue #1675)
- Fix: list of attribute names in URI param 'type' (Issue #1749)
- Fix: long servicepath component in NGSIv2 (Issue #1423, #1764, #1774)
- Fix: syntax change in string query 'q' for exist and not-exist (Issue #1751)
- Fix: sanity check for string query 'q' - detect 'left-hand-side missing' (Issue #1754)
- Fix: more sanity checks for string query 'q' (q empty, parts of 'q' empty - parts of 'q' are separated by ';')
- Fix: error message when updating attribute value for two entities with same id (Issue #1387)
- Fix: bug causing false not-a-number when it really is a valid number (very very rarely)
- Fix: not detecting forbidden chars in entityID for PATCH v2 (Issue #1782)
- Fix: detect forbidden chars in entity ids and attr names in URI (Issue #1793)
- Fix: segfault caused by parameter without value in query string (Issue #1805)
- Fix: some of the operations reported an incorrect 'Allow' HTTP Header on Bad Verb, now fixed
- Fix: Returning 422 InvalidModification instead of 404 NotFound when POSTing entity (Issue #1817)
- Fix: using string "none" as default entity/attribute/metadata type in NGSIv2 (Issue #1830)
- Hardening: sanity checks for numbers (Issue #1306)
0.27.0 (February 1st, 2016)
- Add: proper alarm management, including activation/deactivation in logs (Issue #1582)
- Add: Enable log summary traces using -logSummary CLI (Issue #1585)
- Add: New CLI parameter '-relogAlarms' to see ALL possible alarm-provoking failures in the log-file
- Add: subscriptions triggered by modifications in any attribute without explicitly list them (aka ONANYCHANGE) (Issue #350)
- Add: 'q' expression evaluation in NGSIv2 subscription (at subscription creation/update and update context times) (Issue #1316 and #1658)
- Add: srv=, subsrv= and from= fields to log (Issue #1593)
- Add: POST /v2/subscriptions operation (Issue #1316)
- Add: DELETE /v2/subscriptions operation (Issue #1654)
- Add: PATCH /v2/subscriptions/{subId} operation (Issue #1658)
- Add: reset for notification counters in threadpool mode
- Add: id fields checking for NGSIv2 API and (if -strictNgsiv1Ids is enabled) NGSIv1 API (#1601)
- Fix: entity/attribute operations to align them with the last JSON representation format defined for NGSIv2 (Issue #1259)
- Fix: avoid rendering invalid JSON characters in response payloads (Issue #1172)
- Fix: avoid escaping / in callback field in GET /v2/subscriptions and GET /v2/subscriptions/<subId> operations
- Fix: wrong accumulation in counter sentOK
- Fix: more descriptive error messages for CPr update/query forward fail
- Fix: avoid -g compiler flag in release build
- Fix: supporting decimal values for seconds in ISO8601 strings (Issue #1617)
- Fix: enforcing "http" or "https" schema and better detection of missing port at URLs parsing (Issue #1652)
- Fix: fixed wrong interpretation of empty string keyvalues as empty objects in compounds (Issue #1642)
- Fix: subscription service path is lost at update subscription time (Issue #1693)
- Fix: Mongo driver migrated to legacy-1.0.7 (to get the fix for https://jira.mongodb.org/browse/CXX-699) (Issue #1568)
0.26.1 (December 9th, 2015)
- Default -subIvalCache changed to 60 seconds
- Add: servicePath header filtering in GET /v2/subscriptions operation (Issue #1557)
- Add: New command-line-option '-logLevel <level>', levels: NONE, ERROR, WARNING, INFO, DEBUG (Issue #1583)
0.26.0 (December 1st, 2015)
- Add: Add queue+threads for notifications (notificationMode thread:<queue size>:<num threads>) (Issue #1449)
- Add: possibility to limit the maximum number of simultaneous connections, using the CLI option -maxConnections (Issue #1384)
- Add: possibility to use thread pool for incoming connections, using CLI option -reqPoolSize (Issue #1384)
- Add: Unpatterned subscriptions now also in subscription cache (Issue #1475)
- Add: Built-in Timing/Profiling (Issue #1367)
- Add: clearer statistics in GET /statistics and GET /cache/statistics operations
- Add: Simulated/drop notifications mode is now orthogonal to -notificationMode (Issue #1505)
- Add: finer-grain statistics switches: -statCounters, -statSemWait (old -mutexTimeStat), -statTiming and -statNotifQueue
- Fix: avoid indirect usage of DB connections concurrently due to cursors (Issue #1558)
- Fix: safer treatment of database fields lastNotification, expiration and throttling in
the 'csub' collection, assuming that the field can be either int or long (it is always written as long)
- Fix: number/bool correct rendering in NGSIv1 compound values
- Fix: ONCHANGE notifications triggered by update context operation are filled avoiding querying entities collection (#881)
- Fix: wrong notification values (duplicated) when triggering update context operations are too close (race condition)
- Fix: A bug in the request reading logic that may cause unexpected Parse Errors or even SIGSEGVs
- Fix: Semaphore releasing bug in unsubscribeContext when subscription ID is the empty string (Issue #1488)
- Fix: Fixed an uptil now unknown bug with throttling
- Fix: Only 1 query at csubs collection/cache is done per context element processing at updateContext (previously one query per attribute were done) (Issue #1475)
- Fix: 'count' and 'lastNotificationTime' now maintained by subCache (and synched via DB) (Issue #1476)
- Fix: updates including several attributes with the same name are now reported as InvalidModification (Issue #908)
- Fix: no longer adding subscriptions from all tenants in the cache if broker isn't multitenant (Issue #1555)
- Fix: resetting temporal counters at synching the subscription cache (Issue #1562)
- Fix: using the text "too many sbuscriptions" at cache statistics operations in the case of too many results
- Fix: crash due to subscription ID not conforming to supposed syntax in request "GET /v2/subscriptions/XXX" (Issue #1552)
- Hardening: exhaustive try/catch (mainly at mongoBackend module)
- Deprecated: ONTIMEINTERVAL subscriptions
0.25.0 (November 2nd, 2015)
- Add: NGSIv2 operation GET /v2/subscriptions (#1126)
- Add: NGSIv2 operation GET /v2/subscription/<id> (#1317)
- Add: URI params 'geometry' and 'coords' for GET /v2/entities (#1177)
- Add: CLI argument -notificationMode. Default mode is 'transient' (previous version used 'permanent' implicitly) (#1370)
- Add: CLI argument -connectionMemory for connection memory limit. Default value is 64Kb (#1384)
- Add: CLI argument -noCache to disable cache (recovering $where from 0.23.0 code base to search for subscriptions always in DB)
- Add: githash in --version (#1363)
- Add: contextBroker standard error log in RPM init script (#1175)
- Fix: broken subscription cache (#1308), including the semaphore for subscription cache (#1401)
- Fix: conv op to std op mapping wrongly using patterns in some GET operations (#1322)
- Fix: using 'count' in all paginated queries in NGSIv2 (get entities list was missing) (#1041)
- Fix: add charset=utf-8 for notifications (#1340)
- Fix: incorrect 'details' field rendering (leading to illegal JSON) for error responses in some cases (#843)
- Fix: escaping dot (.) in attrNames field in entities collection in DB (#1323)
- Fix: compound attribute values support in CPr update forwarding (#1440)
- Fix: traces to stdout only if CLI '-fg' is set (#1272)
- Fix: avoid noisy error output in RPM init script (#309)
- Fix: performance problem in NGSIv2 API due to uncontrolled log trace printing
- Fix: trying to update several matching entities associated to the same ID in NGSIv2 API now returns in TooManyResults error (#1198)
- Fix: more accurate text for details field in zero content-length error responses (#1203)
- Fix: description text for parse errors in NGSIv2 JSON requests (#1200)
- Fix: leftover whitespaces in NGSIv2 error names (#1199)
- Fix: clearer error on NGSIv2 entity attribute update, without value in payload (#1164)
- Fix: changed error code from 472 (Invalid Parameter) to 422 (Invalid Modification) in NGSIv1 in the case of missing attribute value (#1164)
- Fix: return error response in NGSIv2 API when the combined length of id/type/servicePath exceeds (mongo) index key length limit (#1289)
- Fix: error responses for NGSIv2 PATCH request on entity without payload (#1257)
- Fix: clearer errors for 'entity not found' and 'conflict too many results' on NGSIv2 update PATCH (#1260)
- Fix: update PATCH request with invalid service-path never returned a response (#1280)
- Fix: error must be Not Found, when updating an unknown attribute of an existing entity on NGSIv2 update PATCH (#1278)
- Fix: POST /v2/entities returns error if the entity to create already exists (#1158)
- Fix: error description for PUT/POST/PATCH request with empty JSON object as payload in NGSIv2 (#1305)
- Fix: improve error description in NGSIv2 PUT on entity, when entity is not found or there is a conflict due to many results (#1320)
- Fix: empty/absent attribute value support, both in NGSIv1 and NGSIv2 (#1187, #1188 and #1358)
- Hardening: mongoBackend checking for field existence and proper type to avoid broker crashes due to DB corruption (#136)
- Hardening: safer input/ouput logic for csub documents in MongoDB and cache
- Remove: proxyCoap binary from RPM (#1202)
- Remove: deprecated command line arguments -ngsi9, -fwdHost and -fwdPort
- Remove: deprecated functionality related with associations
0.24.0 (September 14th, 2015)
- Add: FIWARE::StringQuery scope, implementing filtering capabilities (equal, unqual, greater/less than, ranges, existence) (Issue #864)
- Add: APPEND_STRICT action type for POST /v1/updateContext operation
- Add: REPLACE action type for POST /v1/updateContext operation
- Add: Implemented a RAM-cache for patterned ngsi10 subscriptions (Issue #1048)
- Add: API version 2 only supports JSON so we can now distinguish between STRINGS, NUMBERS (all treated as floats for now),
and BOOLEANS (true, false), for the VALUE for ContextAttribute and Metadata (No Issue)
- Add: POST /v2/entities - entity creation for API version 2 (Issue #970)
- Add: POST /v2/entities/{entityId} - append or update attributes (by entity ID) for API version 2 (Issue #981)
- Add: URI parameter "op=append", for POST /v2/entities/{entityId} (Issue #983)
- Add: DELETE /v2/entities/{id} - delete an entity (Issue #985)
- Add: Number and boolean rendering for attribute simple values (not compounds) in /v1 operations for JSON encoding
- Add: URI parameter "attrs=a1,a2,a3..." for GET /v2/entities/{entityId} (Issue #971)
- Add: PUT /v2/entities/{entityId} - replace attributes (by entity ID) for API version 2 (Issue #987)
- Add: GET /v2/entities/{entityId}/attrs/{attrName}/value - get a single attribute value (Issue #997)
- Add: URI parameters id, idPattern and type for GET /v2/entities (Issues #952 #953 #969)
- Add: PATCH /v2/entities/{entityId} - modify an entity (Issue #979)
- Add: URI parameter 'q' for GET /v2/entities (Issue #967)
- Add: PUT /v2/entities/{entityId}/attrs/{attrName}/value (Issue #999)
- Add: DELETE /v2/entities/{entityId}/attrs/{attrName} (Issue #993)
- Add: PUT /v2/entities/{entityId}/attrs/{attrName} (Issue #991)
- Add: GET /v2/types/{type} (Issue #1028)
- Add: GET /v2/types (Issue #1027)
- Add: text/plain encoding for GET /v2/entities/{entityId}/attrs/{attrName}/value operation (both Accept header and ?options=text) (Issue #1179)
- Add: monit_log_processing.py script to contextBroker RPM (Issue #1083)
- Add: httpsPrepare.sh script to contextBroker-tests RPM (Issue #2)
- Fix: Fixed a bug about generic error handling for API version 2 (Issue #1087)
- Fix: Fixed a bug about error handling of invalid Service-Path for API version 2 (Issue #1092)
- Fix: Check for illegal characters in URI parameters (name and value) (Issue #1141)
- Fix: Checking for forbidden chars in many fields of JSON payload for API version 2 (Issue #1093)
- Fix: Bug fix for receiving compound metadata values (which is not supported) (Issue #1110)
- Fix: Error handling for non-string entity::id/type (Issue #1108), attribute::type, and metadata::type/value
- Fix: Metadata updates involving boolean/number values were not correctly processed (Issue #1113)
- Fix: Removed the check of forbidden characters for the values of the URI parameter 'idPattern'
- Fix: Made broker respond with 400 Bad Request on encountering invalid items in URI parameter 'options' (Issue #1169)
- Fix: Several older memory leaks has been fixed thanks to improvements in leak-detecting tool
0.23.0 (July 10th, 2015)
- Add: Reuse curl context for outgoing notifications, so now connections are persistent if the HTTP server doesn't close them
- Add: CLI paramter -cprForwardLimit to cap the number of forwarding request for a single client request. (Issue #1016).
- Fix: Fixed a bug about pagination problem due to missing ErrorCode with details in the case of queries with forwarding to context providers. (Issue #945)
- Fix: Taking into account the pagination limit before adding "potential" entities to be queried in CPrs. (Issue #945)
- Fix: Add multiservice flag for the default configuration in the RPM. (Issue #964)
- Fix: ONCHANGE subscription sends notification when value under condition it is not updated with updateContext-APPEND in some cases (Issue #943)
- Fix: Updating attribute metadata without updating attribute value at the same time is now supported (Issue #766)
- Fix: Remove unconditional tracing on xmlTreat()/jsonTreat() which was impacting on performance (specially in high-load scenarios)
- Fix: Use NOSIGNAL as libcurl option to avoid crashes in that library. (Issue #1016)
- Add: New operation "GET /v2/entities" (Issue #947)
- Add: New operation "GET /v2" (Issue #956)
- Add: New operation "GET /v2/entities/{id}" (Issue #950)
- Add: New operation "GET /v2/entities/{entityId}" (Issue #950)
- Add: New operation "GET /v2/entities/{entityId}/attrs/{attrName}" (Issue #989)
0.22.0 (May 25th, 2015)
- Add: CORS support for GET requests, configuring allowed origin with -corsOrigin CLI parameter (Issue #501)
- Add: New CLI parameter for the mutex policy: -reqMutexPolicy (Issue #910)
- Add: Measuring the accumulated time waiting for the DB semaphores.
The measures are added to the REST request /statistics, but only if
the new CLI parameter -mutexTimeStat is set (Issue #911)
- Fix: Removing trailing slashes for path of URI before treating the request (Issue #828)
- Fix: Fixed a bug regarding subscriptions with empty entity-type (Issue #691)
- Fix: updateContext propagated to the entire Service Path subtree, instead of just scoping to the particular Service Path in the Fiware-Service header (Issue #885)
- Fix: Mongo driver migrated to legacy-1.0.2
- Add: Database connection pool for mongo. Default size of the pool is 10 connections. This is changed using the CLI parameter -dbPoolSize (Issue #909)
- Add: New CLI parameter for Mongo write concern: -writeConcern (Issue #889)
0.21.0 (May 10th, 2015)
- Add: support for MongoDB 2.6/3.0 (MongoDB 2.4 should *not* be used any longer as inverted geo-queries will not work in that version) (Issue #415)
- Add: context providers full functionality (Issue #787)
- Fix: unhardwire format to forward requests to context providers (Issue #722)
- Fix: using proper GJSON for location.coords entities information (Issue #415)
- Fix: attribute storing in DB (from vector to keymap) to enable CB Active/Active architectures. As a consecuence of this, '.' in the name of attributes is now stored as
'=' in the key (as MongoDB doesn't allow to use '.' for keys). This is transparant from the point of view of the user, given that '=' is a forbidden character in
the external API (Issue #878)
- Fix: simplifying 'GET /v1/contextTypes' and 'GET /v1/contextTypes/<entityType>' operations, removing attribute types (no longer used as attribute identification since 0.17.0). As
a consequence, the 'attributeFormat' URI parameter is no longer needed in the 'GET /v1/contextTypes', so it is ignored.
- Fix: DELETE updates are resolved locally, previously they were forwarded to CPrs (Issue #755)
- Fix: The URI parameter 'notifyFormat' is now treated the same way for subscriptions as for registrations.
- Add: Notifications and forwarded queries/updates are now controlled by a timeout. (Issue #880)
The default timeout is set to 5000 milliseconds (5 seconds), including connection, writing the request and reading the response.
To change this timeout, a new CLI option '-httpTimeout' has been added to the broker.
- Fix: Changed the name, type and unit of the CLI option '-timeout'.
New name: '-dbTimeout',
New type: integer (was a floating point number)
New unit: milliseconds (was seconds, but decimals were allowed as it was a floating point number)
- Add: Updates of ngsi9 subscriptions now also support the URI parameter notifyFormat
0.20.0 (March 31st, 2015)
- Add: new CLI parameter '-timeout' to specify DB connection timeout in the case of using MongoDB replica sets (Issue #589).
- Fix: All convenience operations to use the service routines of standard operations (Issue #117)
- Fix: Correct rendering of response to convop "POST /v1/contextEntities/{entityId::id}/attributes/{attributeName} (Issue #772)
- Fix: Made 'POST /v1/contextEntities/{entityId::id}' and 'POST /v1/contextEntities' accept entity::id and entity::type
in both payload and URL, as long as the values coincide.
- Fix: A few more of the 'responses without entityId::type filled in' found and fixed (Issue #585)
- Fix: The convenience operations "/v1/contextAttributes/{entity::id}/attributes" now share implementation with
convenience operations "/v1/contextAttributes/{entity::id}" and are thus 100% identical.
- Fix: The convenience operation "PUT /v1/contextAttributes/{entity::id}/attributes/{attribute::name}" had a bug
about the metadata in the update, this error has been fixed.
- Fix: A registerContext request that uses associations must specify "attributeAssociations" instead of "attributes" to be consistent with DiscoveContextAvailability messages (Issue #823).
- Fix: Fixed a bug that made the broker crash when compound attribute values were used in convenience operations.
- Fix: Implemented URI-parameter 'notifyFormat=XML/JSON' for NGSI9 subscriptions.
0.19.0 (February 11th, 2015)
- Fix: The option '-multiservice' was ignored and the broker ran always in multiservice mode. Now the option is taken taken into account (Issue #725)
- Fix: Forwarded requests always in XML (Issue #703)
- Fix: internal substitution of servicePath defaults ("/" for update-like operations, "/#" for query-like operations)
- Fix: Temporal hack to allow for forwarding of 'attribute not found in entity found' (Issue #716)
- Fix: Broker crashes dealing with "GET /v1/contextTypes" operation when DB contains entities of the same type, ones with attributes and others without them (Issue #740)
- Fix: Service-Path supported for registrations and discoveries (Issue #719)
- Fix: Service-Path supported for forwarding of registrations between Config Manager and Context Broker (Issue #719)
- Fix: Service-Path supported for forwarding to Context Providers (Issue #719)
- Fix: Hash sign (#) in service-path, or multiple service-paths not valid for updateContext requests (Issue #746)
- Fix: Not forwarding the default Service-Path to context providers (Issue #714)
0.18.1 (January 16th, 2015)
- Fix: Fixed the bug about recovering ONTIMEINTERVAL subscriptions (Issue #693)
- Fix: Fixed the crash in queryContext with an invalid geoscope (Issue #690)
- Fix: Protect the broker against payload-less responses to forwarded requests (Issue #699)
- Fix: Fixed bug that prevented types from entities with no attributes from being listed (Issue #686)
0.18.0 (December 19th, 2014)
- Add: Service-Path in ngsi10 notifications (Issue #674)
- Add: Forbidden characters in the URL path are now detected (Issue #672)
- Add: X-Auth-Token forwarded in ngsi10 notifications (Issue #673)
- Add: Service-Path is taken into account in ngsi10 subscriptions (Issue #675)
- Fix: Bug: POST /v1/conextEntities didn't save the entity type (from payload) (Issue #684)
- Fix: Service-Path is taken into account in 'GET /v1/contextTypes' and 'GET /v1/contextTypes/{entityType}' operations (Issue #676)
0.17.0 (November 28th, 2014)
- Add: New convop: "POST /v1/contextEntities" (Issue #613).
Note also that AppendContextElementRequest has been added an EntityId field.
- Add: Convenience operations that respond with AppendContextElementResponse now get the
EntityId info included in the response.
- Add: New name for URI param 'attributesFormat': 'attributeFormat' (better English).
The old name will be supported as well. (Issue #633)
- Add: Fiware-ServicePath '#' syntax for including path children in the query (without '#' only the service path itself is included). (Issue #646)
- Add: "/" is used as implicit service path for entities. (Issue #646)
- Add: Queries without Fiware-ServicePath are resolved on "/#" implicitly (i.e. all the paths). (Issue #646)
- Fix: Attribute type is no longer used as attribute "identification key" (from now on, only name is used for that purpose) (Issue #640)
- Fix: Changed max-length of tenant names from 20 characters to 50.
Also the database name (CLI-option '-db') has been given a maximum length of 10 bytes. (Issue #616)
- Fix: No longer responding with 'Service not found: $URL'. (Issue #619)
- Fix: Requests with payload containing forbidden characters are now rejected. (Issue #619)
- Fix: Fixed a bug that made the broker crash on problems with EntityId during XML-parse (in very rare situations).
- Fix: 'WSG84' identifier changed to 'WGS84' (it was a typo), although the old one is still supported to ensure backward compatibility. (Issue #627)
- Fix: Fixed a leak for each forwarding of messages to Context Providers.
- Fix: Changed max-length of service path elements from 10 characteres to 50. (Issue #649)
- Fix: Service path is no longer ignored at entity creation time for entities without type. (Issue #642)
- Fix: The broker crashed on receiving compounds for some convops, e.g. /v1/contextEntities/{entityId} (Issue #647)
- Fix: Using 443 as default port for "https" notifications. (Issue #639)
- Fix: Fixed RPM package so PID file is stored in /var/run/contextBroker instead of /var/log/contextBroker. (Issue #612)
- Fix: Payload no longer accepts 'operator' as part of a Scope. (Issue #618)
- Fix: Made compound attribute values for for convenience operations (Issue #660)
0.16.0 (November 3rd, 2014)
- Add: Adding alternative (preferred) URLs: '/ngsi10' => '/v1' AND '/ngsi9' => '/v1/registry' (Issue #559)
- Add: New convenience operation '/v1/contextEntities' - to get a list of ALL existing entities (Issue #563)
- Add: New scopeType FIWARE::Filter::Existence (only with value "entity::type" in this version)
- Add: New URI parameter '!exist=entity::type' to filter entities whose type is empty (Issue #570)
- Add: New conv op URI parameter 'entity::type=TYPE' to filter by type (Issue #570)
- Add: New convenience operations PUT/POST/GET/DELETE /v1/contextEntities/type/<type>/id/<id> (Issue #581)
- Add: New convenience operations PUT/POST/GET/DELETE /v1/contextEntities/type/<type>/id/<id>/attributes/ATTRIBUTE_NAME (Issue #581)
- Add: New convenience operations PUT/POST/GET/DELETE /v1/contextEntities/type/<type>/id/<id>/attributes/ATTRIBUTE_NAME/META_ID_VALUE (Issue #581)
- Add: New convenience operations POST/GET /v1/registry/contextEntities/type/<type>/id/<id> (Issue #581)
- Add: New convenience operations POST/GET /v1/registry/contextEntities/type/<type>/id/<id>/attributes/ATTRIBUTE_NAME (Issue #581)
- Fix: Upgrading from a previous RPM package caused the orion user to disappear.
- Fix: Change service path HTTP header name: 'ServicePath' -> 'Fiware-ServicePath' (Issue #541)
- Fix: Avoid unneeded additional query on csubs/casubs collections to get details of ONCHANGE triggered subscription when processing updateContext (Issue #371)
- Fix: Some convenience operations responsed always with empty type (Issue #585)
- Fix: 'FIWARE_Location' scope type changed to 'FIWARE::Location' (although the old one is still supported)
- Fix: More detailed error responses for some convenience operations:
- POST/DELETE /v1/contextEntities/EID/attributes/ATTR_NAME
- POST/DELETE /v1/contextEntities/type/TYPE/id/ID/attributes/ATTR_NAME
Also the POST variant of these two URLs always returned 200 OK. Not anymore.
0.15.0 (October 1st, 2014)