What’s New in Karabo 2.8.0

The most relevant improvements, fixes and changes are:

  • GUI: The EditableOptionsBox has been deprecated and is no longer supported

  • GUI: The Workflow widgets have been deprecated and are no longer supported

  • Bound API: Method ‘validate’ of Validator object returns tuple: (flag, error, validated)

    In case ‘flag’ is false, it would have raised an exception before.

  • C++ API: The pugiXML dependency has been moved as a dependency.

    Headers can be found in the extern/include directory instead of include/karabo/pugiXml. e.g. the include statements like #include <karabo/pugiXml/pugixml.hpp> should become #include <pugixml.hpp>

    The BaseDevice class has only methods used by the DeviceServer. Although no device code should make use of these methods, it is possible that some unit tests working against earlier version of Karabo will break. A pattern that was observed is: A unit test uses BaseDevice::create method to test the ability of a server to instantiate a device and tests the device’s behaviour using Device specific methods, e.g. getCurrentConfiguration. This test should be adapted to either cast the BaseDevice::Pointer to a Device::Pointer with a boost::dynamic_pointer_cast or by calling the public method slotGetCofiguration.

  • MDL API: The Image element is now supported natively and DAQ compatible!

Detailed Merge-Log

Bound/cpp core

  • Bound: proper lock protection in deviceSchema and config parameters of the device always need lock protection to avoid race conditions. !4062
  • Bound: PythonDevice.get - copy hash and its vector. It should not be possible to change the content of PythonDevice._parameters without the proper lock. !4081
  • Bound: optionally set server hostname !4094
  • Bound: Fix silent validation exceptions (BOUND API) !4152
  • Bound: ‘readOnly’ attribute for TableElements in Bound-Python. !4212
  • Bound: Fix putting list into hash with integer as large as uint64 !4167
  • C++: no extra thread for server process !4057
  • C++: Validation parameters in C++ !4158
  • C++: Enforce row schema for table elements. Tables without row description make no sense - and harm the GUI. !4100
  • C++: optionally set server hostname !4095
  • C++: Fix file logger index file !4130
  • C++: Fix synchronous code paths in asyncReadXY. These paths have to read all (not only ‘_some’) data. !4146
  • C++: Table element ‘connections’ in the ‘OutputPanel’ configuration is now readOnly. !4178
  • C++: Trust train ids from time server even if reset. Before, the C++ sever assumed strongly monotonous increase of train ids. !4193
  • C++: Add filter for network appender !4204 !4220
  • C++: Log topic and avoid using any _beats topic !4153
  • C++: all SignalSlotable now carry a “type” in instanceInfo !4226
  • C++: Fix for output channel schema updates - schema Hashes must not contain “__classId” key !4209

Dependencies and deployment

  • BUILD: Add cmake build alternative !4229
  • DEPS: karabo develop processes DEPENDS tags correctly !4148
  • DEPS: added pugixml to dependencies !4189
  • MDL: add defaultValue to middlelayerserver help !4090
  • MDL: Help option in krabo-middlelayerserver !4079
  • InfluxDB: Add influx migration traceability. Adapt to use authenticated access in the Influx Server. !4183
  • CI: re-enable X server for conda !4231
  • WEB: optionally set hostname on webserver !4201

Tests

  • CI: use a specific broker for tests !4073
  • CI: Fix CI display settings for headless Qt tests !4097
  • C++: Longer timeout in JMS test with 100 messages !4098
  • C++: Stabilise strand test. Ensure that handler cannot be called when captured variables are dead. !4096
  • C++: Take care that the slots in LockTest always reply !4106
  • C++: Fix for failures of DataLogging_Test on the CI !4112
  • C++: Fix device integration test. Order guarantee does not apply per process, but only per sender/receiver. !4218
  • C++: Relax timeouts in signal slotable test. Hijacked this to remove also some confusing casts elsewhere… !4202
  • C++ logger tests: aggressively long timeouts for influxDB !4223
  • C++: relax timing test !4228
  • C++: more reliable DeviceClient_Test::testGetSchemaNoWait. no repeated triggering of schema requests. longer timeout !4219
  • More fixes to Influx Data Logging and its integration tests. !4200
  • Fix for Influx Logger Integration Test getting stuck or crashing when Influx is not available !4147
  • Fix data logging integration tests !4166
  • C++: Fixes for data loggers to stabilise tests !4170

Middlelayer Core

  • MDL: Fix invalid configuration retrieved for PropTestMdl device. !4074
  • MDL: Enforce row schema for vector hashes !4078
  • MDL: Provide a copy of the system topology when working with it !4075
  • MDL: set server hostname !4076 !4113
  • MDL: Implement Image Element and provide ImageData !4145

Core Devices

  • GUI Server: Send multiple devices configurations changes in a single hash to the connected GUI clients. !4058
  • GUI Server: Forward project manager signal of changed project uuids to GUI clients !4110
  • GUI Server: Fix GuiServerDevice Schema bookkeeping !4137
  • GUI Server: Add slotDisconnectClient !4164
  • Alarm Service: Fix alarm service and thus spurious integration test failures !4117
  • Data Logger: make flush reliable !4171
  • Datalog Reader: Logreader for influxDB properly replies error (and not empty result) !4168
  • Datalog Reader: slotGetConfigurationFromPast now throws instead of reply empty !4157
  • Datalog Reader: Count slot calls for history !4224
  • DataLogger: Get rid of DataLogger::handleChanged and DataLogger::handleSchemaUpdatedDelegate ‘handleChanged’ and ‘handleSChemaUpdated’ completely to ‘DeviceData’ and its derived classes. !4180
  • InfluxDB: InfluxDbClient now configurable and automatically flushing the batch !4177
  • InfluxDB: Separate influx url for read and write !4216

Graphical User Interface

  • GUI: Provide a const type definition !4071
  • GUI: Refactor if a proxy action is allowed !4024
  • GUI: Fix invalid indices in table element !3967
  • GUI: Clean application on every teardown !4059
  • GUI: Provide generic support for access levels !4043
  • GUI: Cleanup the configuration singleton !4050
  • GUI: More cleanup in the table element !4061
  • GUI: Drastically increase performance of daemon widget !4069
  • GUI: Access level dependent delegates - button clickable state in daemon widget !4044
  • GUI: Rename system and tree in topology !4064
  • GUI: Clean a bit the globals file !4065
  • GUI: Clean and fix the spin box focuses !4066
  • GUI: Remove host node from topology if no servers !4063
  • GUI: Clean even further the table element !4072
  • GUI: provide more colors in the cycler !4080
  • GUI: Align tests without row schema in table element !4086
  • GUI: Deprecate EditableOptionsBox !4085
  • GUI: Clean and unify spinboxes once more !4083
  • GUI: Clean up and unify table element with the schema hash. Fairly speed up the processing !4077
  • GUI: Clean edit list controller !4089
  • GUI: Enable log axis in viewbox if enabled !4093
  • GUI: Move create html hash to native !4088
  • GUI: Color table button edit conf !4087
  • GUI: Cleanup the wheel double edit !4056
  • GUI: Clean hex widget and provide state awareness !4084
  • GUI: Little cleanup of the time axis !4103
  • GUI: Clean table button event state in configurator !4101
  • GUI: Prevent items leaving scene completely by dragging !4105
  • GUI: Clean the display controllers from slots !4099
  • GUI: Align the wheeledit tests !4109
  • GUI: Enable closing of the alarm panel !4102
  • GUI: Let the project manager know which items we store !4108
  • GUI: Histogram auxplot !4111
  • GUI: Fix a typo in the messagebox for scene retrieval !4116
  • GUI: Configurator mandatory optimization !4082
  • GUI: Enable moving of rows in the table element !4115
  • GUI: Provide a bunch of tests for the table element !4118
  • GUI: Don’t show documentation link for classes in topology !4120
  • GUI: Add icons in the table context !4119
  • GUI: Provide several icons for the project items context menus !4121
  • GUI: Escape in info popup for value descriptions !4123
  • GUI: Provide more error handling in GUI network !4125
  • GUI: Char editor is validated !4132
  • GUI: Show a reasonable time format in configuration from past !4133
  • GUI server: When disconnecting a client, better trigger device disconnection under mutex !4131
  • GUI: HexLine edit validator !4128
  • GUI: Change font on scene generation: Ubuntu -> Sans Serif !4139 !4140
  • GUI: Increase border allowance on widget resize !4138
  • GUI: Store the closable panel configuration !4136
  • GUI: Toggle curve visibility by clicking on legend boxes !4135
  • GUI: Implement vector xy graph !4151
  • GUI: Provide local time on conf from past feedback !4156
  • GUI: Initialize the alarm state of the project device correctly !4126
  • GUI: Fix replace scene from file !4161
  • GUI: Provide a size hint for the graph widgets !4176
  • GUI: Accurate movement of items on the scene !4185
  • GUI: Implement GridView in Scene !4175
  • GUI: Align the copyright date in the about dialog !4188
  • GUI: None timestamp protection in tooltip of image widgets !4192
  • GUI: Set the background of the images to transparent !4191
  • GUI: Make double click in project expand and fold nodes !4174
  • GUI: Enable image export on plot items !4173
  • GUI: Account for reconfigure failures in the client !4197
  • GUI: Fix the resizing of layouts on the scene !4186
  • GUI: Setup an about icon in the topology and project for context !4194
  • GUI: Show empty plot when receiving empty vector in vector graph !4181
  • GUI: Select project device in topology !4172
  • GUI: Port MultiCurve widget to PyQtgraph !4154
  • GUI: Executed message boxes automatically close after popup seconds (60) !4203
  • GUI: Request reply of execute errors in the client !4199
  • GUI: Transparent graph view in plots !4182
  • GUI: Separate trendline button click and drag from historic data retrieval !4149
  • GUI: Don’t use separators when adding actions to viewbox !4215
  • GUI: Better debug diagnostic when projects are loaded multiple times !4222
  • GUI: Adapt the unit test for inf values in VectorGraphs !4214
  • GUI: Enable duplicate of devices without indexing !4227
  • GUI: Account for scene panel padding in Qt5 !4217
  • GUI: Modify the GUI background processing for GIL !4235
  • GUI: Select the topology on disconnect !4232
  • GUI: Middle panel icons !4241
  • GUI: Show topology panel on show project device !4239
  • GUI: Different legend style for plots !4238
  • GUI: Check vector size in vector xy graph !4237
  • GUI: Performance increase alarm panel - Rework !4236
  • GUI: Fix loss of configuration when renaming a device in project !4225
  • GUI: Implement first AccessRoles for scene and macro editing !4187
  • GUI: Use largest triangle three buckets for downsampling !4210
  • GUI: Provide initReply from instantiation on failure !4243
  • GUI: Close duplicated scenes by simple when they are unattached !4247
  • GUI: Fix update dialog not giving output in Qt5 !4244
  • GUI: Provide detailed text in message boxes and fix a few !4248
  • GUI: Account for None values on the scene for the most important display widgets !4250
  • GUI: Provide Abort and Halt with icon !4213
  • GUI: Set the application style to Fusion !4234
  • GUI: Scene grid snapping !4254
  • GUI: Fix the console input !4260
  • GUI: Set the minimum height of number line edits !4258
  • GUI: Refactor the downsampling to agnostic range !4261