Ensure RT incremental update not applied early
[ric-plt/lib/rmr.git] / docs / rel-notes.rst
1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
2 .. SPDX-License-Identifier: CC-BY-4.0
3 .. CAUTION: this document is generated from source in doc/src/rtd.
4 .. To make changes edit the source and recompile the document.
5 .. Do NOT make changes directly to .rst or .md files.
6
7 ============================================================================================
8 RMR Release Notes
9 ============================================================================================
10
11
12 RMR Release Notes
13 =================
14
15 The following is a list of release highlights for the RMR
16 library. At one point in time the RMR repo also housed a
17 wrapper library with a separate version and release cycle.
18 This resulted in *leap frogging* versions for each package;
19 the RMR core library was assigned odd major numbers (e.g.
20 3.1.0). When the wrapper code was moved to a different repo
21 the need to leap frog versions ceased, and beginning with
22 version 4.0.0, the RMR versions should no longer skip.
23
24
25 2021 April 9; version 4.7.2
26 ---------------------------
27
28 Ensure that route table update received from route generator
29 is not applied before a full route table is received.
30
31
32
33 2021 April 2; version 4.7.1
34 ---------------------------
35
36 Correct issues found during static code analysis.
37
38
39
40 2021 March 31; version 4.7.0
41 ----------------------------
42
43 The route table collector thread will capture the current
44 "offering" from the Route Manager (table generator) if the
45 RMR_SEED_RT environment variable is set.
46
47
48
49 2021 March 10; version 4.6.1
50 ----------------------------
51
52 Corrected unit test "framework" to make manual testing
53 easier, and to add the ability to set the code optimisation
54 level via the CMake command line parameter OPT_LEVEL=n.
55
56
57
58 2021 February 22; Version 4.6.0
59 -------------------------------
60
61 Enhanced to use millisecond based timestamps when writing log
62 messages. (RIC-627)
63
64 Enhanced to eliminate the reqirement that the file specified
65 by the RMR_VCTL_FILE environment variable exist when RMR is
66 initialised. RMR will correctly find this file if it is
67 created after initialisation. Further, if the environment
68 variable is not given, the user may create and populate
69 /tmp/rmr.v at any time and the contents of this file will be
70 used as if it were supplied via the environment variable.
71 This should make debugging in existing containers easier.
72
73 Enhanced to send an alarm manager when the user application
74 is not receiving messages fast enough. The original messages
75 written to the standard error are still generated. (RIC-204)
76
77
78
79 2021 January 21; Version 4.5.2
80 ------------------------------
81
82 Fixes the excessive TCP session bug when sending to a slow
83 receiver and a related segment fault because of too many open
84 file descriptors. (RIC-735)
85
86
87
88 2021 January 19; Version 4.5.1
89 ------------------------------
90
91 Version bump to work round a CI job bug preventing push of
92 the 4.5.0 packages from staging to release in package cloud.
93 (RIC-732)
94
95
96
97 2021 January 8; Version 4.5.0
98 -----------------------------
99
100 Version bump for next release tracking. Corrected a potential
101 locking issue in message allocation. (RIC-732)
102
103
104
105 Cherry Release
106 ==============
107
108
109
110 2020 December 4; Version 4.4.6
111 ------------------------------
112
113 Correct a range check bug when cloning a route table in prep
114 to load a new one. (RIC-720)
115
116
117
118 2020 November 17; Version 4.4.5
119 -------------------------------
120
121 Correct bug in round robin group allocation that could lead
122 to an empty group. (RIC-695)
123
124
125
126 2020 November 13; Version 4.4.4
127 -------------------------------
128
129 Correct address memory leak in the RTE cleanup. (RIC-674)
130
131
132
133 2020 November 4; Version 4.4.3
134 ------------------------------
135
136 Correct bug introduced with race fix (4.4.0) (RIC-674)
137
138
139
140 2020 November 4; Version 4.4.2
141 ------------------------------
142
143 Changes to correct more complaints generated by a code scan.
144 (RIC-673) Also addressed some sonar coverage issues with unit
145 test changes.
146
147
148
149 2020 November 4; Version 4.4.1
150 ------------------------------
151
152 Changes to correct complaints generated by a code scan.
153 (RIC-673)
154
155
156
157 2020 November 4; Version 4.4.0
158 ------------------------------
159
160 Changes to address a potential race condition when route
161 tables arrive in quick succession. (RIC-674)
162
163
164
165 2020 October 30; Version 4.3.1
166 ------------------------------
167
168 Changes to address code analyser scans and two bug fixes
169 identified while addressing the analysis data. (RIC-673)
170
171
172
173 2020 October 2; Version 4.3.0
174 -----------------------------
175
176 Add message types for traffic steering anomaly messages
177
178
179
180 2020 September 15; Version 4.2.4
181 --------------------------------
182
183 Add man page for the rmr_set_low_latency() function (RIC-631)
184
185
186
187 2020 September 15; Version 4.2.3
188 --------------------------------
189
190 Correct arg processing bug in rmr_rpobe (RIC-645)
191
192
193
194 2020 August 4; Version 4.2.2
195 ----------------------------
196
197 Correct bug in the rmr_probe support utility when -r option
198 is used on the command line (RIC-644)
199
200
201
202 2020 August 4; Version 4.2.1
203 ----------------------------
204
205 Add additional environment variable dump if RMR_LOG_VLEVEL
206 set to 4 at start.
207
208
209
210 2020 August 3; Version 4.2.0
211 ----------------------------
212
213 Add support for the RMR_RTREQ_FREQ environment variable to
214 control the request frequency for a new route table (default
215 5s if not supplied). (RIC-630)
216
217
218
219 2020 July 21; Version 4.1.4
220 ---------------------------
221
222 Fix bug in SI95 -- possible use of pointer after free
223 (RIC-626).
224
225
226
227 2020 July 9; version 4.1.3
228 --------------------------
229
230 Allow RTS messages to be sent before the arrival of the
231 initial route table. Calls to RTS (heart beat responses)
232 prior to the initial route table load could cause a crash if
233 a framework blindly assumes that RTS is valid. (RIC-589)
234
235
236
237 2020 June 22; version 4.1.2
238 ---------------------------
239
240 Fix typo in RIC Message header file.
241
242 Add document for message type constants and the scripts which
243 generate them.
244
245
246
247 2020 June 22; version 4.1.1
248 ---------------------------
249
250 Add new message types to RIC header file for
251     RIC_ALARM           (110)
252     RIC_ALARM_QUERY     (111)
253     RIC_METRICS         (120)
254     RAN_E2_RESET_REQ    (12008)
255     RAN_E2_RESET_RESP   (12009)
256
257
258
259 2020 June 18; version 4.1.0
260 ---------------------------
261
262 Bump version minor to move away from 4.0.* which will bump
263 for any patches applied back to bronze.
264
265 Add magic C++ goo to symtab header file allowing C++ xAPPs to
266 use the symbol table directly.
267
268
269
270 Bronze Release
271 ==============
272
273
274
275 2020 May 06; version 4.0.5
276 --------------------------
277
278 Fix the bug in SI95 receive message management semaphore
279 count issue. (RIC-355)
280
281
282
283 2020 April 29; version 4.0.4
284 ----------------------------
285
286 Fix the traffic steering message type constants (again)
287 (RIC-342)
288
289
290
291 2020 April 28; version 4.0.3
292 ----------------------------
293
294 Fix sonar flagged bugs (RIC-78)
295
296
297
298 2020 April 24; version 4.0.2
299 ----------------------------
300
301 Correct bug in SI95 transport header length validation
302 (RIC-341)
303
304
305
306 2020 April 22; version 4.0.1
307 ----------------------------
308
309 Correct message type constant for Traffic Steering
310 predication (RIC-342)
311
312
313
314 2020 April 21; version 4.0.0
315 ----------------------------
316
317 The NNG based libraries are no longer included in the RMR
318 packages. This is considered a breaking change as NNG will
319 not be supported by default. It is still possible to build
320 with RMR-NNG libraries, but that is the exception. The API
321 between 3.8.2 and 4.0.0 is the SAME. Upgrading to 4.0.0 only
322 means that the underlying transport mechanism is limited only
323 to SI95.
324
325 The rmr_rcv_specific() function has been deprecated as it was
326 necessary only for NNG and Nanomsg support. Its use should be
327 discontinued.
328
329
330
331 2020 April 20; version 3.8.2
332 ----------------------------
333
334 Fix bug which was preventing an instance receiving dynamic
335 route table updates. (RIC-336)
336
337
338
339 2020 April 20; version 3.8.1
340 ----------------------------
341
342 Add user guide which replaces the concatenation of man pages
343 (RIC-328)
344
345
346
347 2020 April 17; version 3.8.0
348 ----------------------------
349
350 Add safe connect to avoid potential connect bug on Linux
351 (RIC-332)
352
353 Change debugging in route table collector to avoid possible
354 segment fault when in level 2 debug (RIC-335)
355
356
357
358 2020 April 15; version 3.7.4
359 ----------------------------
360
361 Add missing message type to header file (RIC-334)
362
363
364
365 2020 April 14; version 3.7.3
366 ----------------------------
367
368 Fix bug in rmr_call() when using SI95 (RIC-333)
369
370
371
372 2020 April 10; version 3.7.2
373 ----------------------------
374
375 Fix bug related to static route table only mode (RIC-331)
376
377
378
379 2020 April 9; version 3.7.1
380 ---------------------------
381
382 The max length restriction for receiving messages when using
383 SI95 has been removed. The length supplied during
384 initialisation is used as the "normal maximum" and default
385 buffer allocation size, but messages arriving which are
386 larger are accepted. (RIC-309)
387
388
389
390 2020 April 7; version 3.7.0
391 ---------------------------
392
393 The health check support programme was renamed to rmr_probe
394 (RIC-308).
395
396
397
398 2020 April 6; version 3.6.6
399 ---------------------------
400
401 Correct bug in SI95 address conversion module (RIC-327)
402 Correct bug in SI initialisation module
403
404
405
406 2020 April 2; version 3.6.5
407 ---------------------------
408
409 Correct potential nil pointer use when examining interfaces
410 for use as a listen target (RIC-307)
411
412
413
414 2020 April 1; version 3.6.4
415 ---------------------------
416
417 Correct potential nil pointer use in the NNG interface
418 (RIC-303) Correct issue preventing CI build without a
419 container
420
421
422
423 2020 March 30; version 3.6.3
424 ----------------------------
425
426 Correct the max receive message size constant in rmr.h
427 (RIC-301)
428
429
430
431 2020 March 23; version 3.6.2
432 ----------------------------
433
434 Fix message initialisation bug when pulling a message from
435 the pool (RIC-295)
436
437
438
439 2020 March 19; version 3.6.1
440 ----------------------------
441
442 Fix problem with RPM package install
443
444
445
446 2020 March 18; version 3.6.0
447 ----------------------------
448
449 Add message types to support traffic steering
450
451
452
453 2020 March 16; version 3.5.2
454 ----------------------------
455
456 Correct bug in the meid table parser that prevented the
457 ack/nack of meid tables (RIC-273)
458
459
460
461 2020 March 10; version 3.5.1
462 ----------------------------
463
464 Add missing health check message types.
465
466
467
468 2020 March 9; version 3.5.0
469 ---------------------------
470
471 Added new wormhole send function: rmr_wh_call().
472
473
474
475 2020 March 6; version 3.4.0
476 ---------------------------
477
478 Add new wormhole state function: rmr_wh_state().
479
480
481
482 2020 March 5; Version 3.3.1
483 ---------------------------
484
485 Correct several "bugs" identified by automatic code analysis.
486
487
488
489 2020 March 4; Version 3.3.0
490 ---------------------------
491
492 Add SI95 based unit testing Health check support binary added
493 (reason for minor bump)
494
495
496
497 2020 February 26; version 3.2.5
498 -------------------------------
499
500 Fix source address bug in SI95 receive/send funcitons. Fix
501 threading issues involving session disconnection in SI95
502 Remove unused SI95 status variable.
503
504
505
506 2020 February 24; version 3.2.4
507 -------------------------------
508
509 Fix meid bug (RIC-220) causing core dump.
510
511
512
513 2020 February 21; version 3.2.3
514 -------------------------------
515
516 Add meid routing support to the SI95 interface.
517
518
519
520 2020 February 20; version 3.2.2
521 -------------------------------
522
523 Fix receive thread related core dump (ring early unlock).
524
525
526
527 2020 February 19; version 3.2.1
528 -------------------------------
529
530 Added missing message types (E2-Setup)
531
532
533
534 2020 February 18; version 3.2.0
535 -------------------------------
536
537 Added support for new Route Manager and it's ability to
538 accept a request for table update.
539
540
541
542 2020 February 14; version 3.1.3
543 -------------------------------
544
545 Fix bug in SIsend which was causing a core dump in some cases
546 where the application attempted to send on a connection that
547 had disconnected. (RIC-207).
548
549
550
551 2020 February 6; version 3.1.2
552 ------------------------------
553
554 Fix disconnection detection bug in interface to SI95.
555
556
557
558 2020 January 31; verison 3.1.1
559 ------------------------------
560
561 Allow route table thread logging to be completely disabled
562 when logging is turned off.
563
564
565
566 2020 January 26; verison 3.1.0
567 ------------------------------
568
569 First step to allowing the user programme to control messages
570 written to standard error. Introduces the rmr_set_vlevel()
571 function, and related environment variable.
572
573
574
575 2020 January 24; verison 3.0.5
576 ------------------------------
577
578 Fix bug in SI95 with receive buffer allocation.
579
580
581
582 2020 January 23; verison 3.0.4
583 ------------------------------
584
585 Fix bug in SI95 causing excessive CPU usage on poll.
586
587
588
589 2020 January 22; verison 3.0.3
590 ------------------------------
591
592 Enable thread support for multiple receive threads.
593
594
595
596 2020 January 21; verison 3.0.2
597 ------------------------------
598
599 Fix bug in SI95 (missing reallocate payload function).
600
601
602
603 2020 January 20; verison 3.0.1
604 ------------------------------
605
606 Enable support for dynamic route table updates via RMR
607 session.
608
609
610
611 2020 January 16; version 3.0.0
612 ------------------------------
613
614 Introduce support for SI95 transport library to replace NNG.
615 (RMR library versions will use leading odd numbers to avoid
616 tag collisions with the wrapper tags which will use even
617 numbers.)
618
619
620
621 2019 December 9; version 1.13.1
622 -------------------------------
623
624 Correct documentation and missing rel-notes update for RTD.
625
626
627
628 2019 December 6; version 1.13.0
629 -------------------------------
630
631 Add ability to route messages based on the MEID in a message
632 combined with the message type/subscription-ID.
633
634
635
636 Amber Release
637 =============
638
639
640
641 2019 November 14; version 1.11.1
642 --------------------------------
643
644 Fix bug in payload reallocation function; correct length of
645 payload was not always copied.
646
647
648
649 2019 November 13; version 1.12.1
650 --------------------------------
651
652 New message type constants added to support A1.
653
654
655
656 2019 November 4; version 1.11.0
657 -------------------------------
658
659 Version bump to move away from the 1.10.* to distinguish
660 between release A and the trial.
661
662
663
664 2019 November 7; version 1.12.0
665 -------------------------------
666
667 Version cut to support continued development for next release
668 preserving the 1.11.* versions for release 1 (Amber) and
669 related fixes.
670
671
672
673 2019 October 31; version 1.10.2
674 -------------------------------
675
676 Provide the means to increase the payload size of a received
677 message without losing the data needed to use the
678 rmr_rts_msg() funciton.
679
680
681
682 2019 October 21; version 1.10.1
683 -------------------------------
684
685 Fix to prevent null message buffer from being returned by the
686 timeout receive function if the function is passed one to
687 reuse.
688
689
690
691 2019 October 21; version 1.10.1
692 -------------------------------
693
694 Add periodic dump of send count info to stderr.
695
696
697
698 2019 September 27; version 1.9.0
699 --------------------------------
700
701 Python bindings added receive all queued function and
702 corrected a unit test
703
704
705
706 2019 September 25; version 1.8.3
707 --------------------------------
708
709 Correct application level test issue causing timing problems
710 during jenkins verification testing at command and merge
711
712 Handle the NNG connection shutdown status which may now be
713 generated when a connection throug a proxy is reset.
714
715
716
717 2019 September 25; version 1.8.2
718 --------------------------------
719
720 Correct bug in rmr_torcv_msg() when timeout set to zero (0).
721
722
723
724 2019 September 19; version 1.8.1
725 --------------------------------
726
727 Correct missing constant for wrappers.
728
729
730
731 2019 September 19; version 1.8.0
732 --------------------------------
733
734 New message types added:
735     RAN_CONNECTED, RAN_RESTARTED, RAN_RECONFIGURED
736
737
738
739 2019 September 17; version 1.7.0
740 --------------------------------
741
742 Initial connection mode now defaults to asynchronous. Set
743 RMR_ASYNC_CONN=0 in the environment before rmr_init() is
744 invoked to revert to synchronous first TCP connections.
745 (Recovery connection attempts have always been asynchronous).
746
747
748
749 2019 September 3; version 1.6.0
750 -------------------------------
751
752 Fix bug in the rmr_rts_msg() function. If a return to sender
753 message failed, the source IP address was not correctly
754 adjusted and could cause the message to be "reflected" back
755 to the sender on a retry.
756
757 Added the ability to set the source "ID" via an environment
758 var (RMR_SRC_ID). When present in the environment, the string
759 will be placed in to the message header as the source and
760 thus be used by an application calling rmr_rts_smg() to
761 return a response to the sender. If this environment variable
762 is not present, the host name (original behaviour) is used.
763
764
765
766 2019 August 26; version 1.4.0
767 -----------------------------
768
769 New message types were added.
770
771
772
773 2019 August 16; version 1.3.0
774 -----------------------------
775
776 New mesage types added.
777
778
779
780 2019 August 13; version 1.2.0 (API change, non-breaking)
781 --------------------------------------------------------
782
783 The function rmr_get_xact() was added to proide a convenient
784 way to extract the transaction field from a message.
785
786
787
788 2019 August 8; version 1.1.0 (API change)
789 -----------------------------------------
790
791 This change should be backward compatable/non-breaking A new
792 field has been added to the message buffer (rmr_mbuf_t). This
793 field (tp_state) is used to communicate the errno value that
794 the transport mechanism might set during send and/or receive
795 operations. C programmes should continue to use errno
796 directly, but in some environments wrappers may not be able
797 to access errno and this provides the value to them. See the
798 rmr_alloc_msg manual page for more details.
799
800
801
802 2019 August 6; version 1.0.45 (build changes)
803 ---------------------------------------------
804
805 Support for the Nanomsg transport library has been dropped.
806     The library librmr.* will no longer be included in packages.
807
808 Packages will install RMR libraries into the system preferred
809     target directory. On some systems this is /usr/local/lib
810     and on others it is /usr/local/lib64.  The diretory is
811     determined by the sytem on which the package is built and
812     NOT by the system installing the package, so it's possible
813     that the RMR libraries end up in a strange location if the
814     .deb or .rpm file was generated on a Linux flavour that
815     has a different preference than the one where the package
816     is installed.
817
818
819
820 2019 August 6; version 1.0.44 (API change)
821 ------------------------------------------
822
823 Added a new message type constant.
824
825
826
827 2019 July 15; Version 1.0.39 (bug fix)
828 --------------------------------------
829
830 Prevent unnecessary usleep in retry loop.
831
832
833
834 2019 July 12; Version 1.0.38 (API change)
835 -----------------------------------------
836
837 Added new message types to RIC_message_types.h.
838
839
840
841 2019 July 11; Version 1.0.37
842 ----------------------------
843
844
845 librmr and librmr_nng
846     - Add message buffer API function rmr_trace_ref()
847       (see rmr_trace_ref.3 manual page in dev package).
848
849
850
851 2020 April 8; Version n/a
852 -------------------------
853
854 RMR Python moved to Python Xapp Framework
855 (https://gerrit.o-ran-sc.org/r/admin/repos/ric-plt/xapp-frame-py)
856
857
858
859 2020 February 29; Version 2.4.0
860 -------------------------------
861
862 Add consolidated testing under CMake Add support binary for
863 health check (SI95 only)
864
865
866
867 2020 February 28; Version 2.3.6
868 -------------------------------
869
870 Fix bug in Rt. Mgr comm which prevented table ID from being
871 sent on ack message (RIC-232).