cbm-fles / flesnet

CBM FLES Timeslice Building
7 stars 23 forks source link

Client side changes: Component size and multi-input support (from CBMROOT) #64

Closed PALoizeau closed 4 years ago

PALoizeau commented 4 years ago

Bring back the client size developments/patches done in CBMROOT and used in local flesnet versions for mCBM. These changes were applied until now in CBMROOT by copying files in the fles_ipc folder at build time.

  1. Add Component size accessor to Timeslice [FLES IPC] => Mostly used for monitoring for now
  2. Add classes for multi-input clients [FLES IPC] and support for it in tsclient [TSCLIENT binary] => allow things like n-to-m tsa files replaying, n-to-m streams splitting or unpackers in flesnet with multiple builder nodes.

The second change introduces a dependency of the fles_ipc library on the logging library which may be replaced by a patch in CBMROOT if undesirable.

cuveland commented 4 years ago

Newly created tests show, in some instances, unintuitive behavior of the TimesliceMultiInputArchive class:

PALoizeau commented 4 years ago

The following point is in fact a "feature" that we introduced to support the multiple pn merging

* Multiple files separated by ";" are merged (sorted by time), while multiple
  files selected by wildcard are visited in sequence

All the other ones are indeed things that we have to fix (bugs, leftovers or forgotten missing pieces) . It is actually interesting that they did not bother our usage before. => Should we make an issue to remember it?

Newly created tests show, in some instances, unintuitive behavior of the TimesliceMultiInputArchive class:

* Throws boost::filesystem::filesystem_error if given filename does not contain
  a directory (incompatible with plain TimesliceInputArchive)

* Throws std::out_of_range if given file does not exist because of the "stream.at(0)"
  statement in the constructor

* Non-standard wildcard matching: Only "*", no "?". No way to protect literal "*".

* Calls "exit()" on errors instead of throwing an exception
cuveland commented 4 years ago

I am currently working on an extended implementation of this functionality, following these ideas:

As I don't know when this will be ready to replace the present functionality of TimesliceMultiInput*, I have now merged the existing pull request as it is.

So I would, for now, postpone fixing issues that did not bother the cbmroot users up to now.