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