213 : ExtractionModule & ExtractionChain implementation and integrations#633
213 : ExtractionModule & ExtractionChain implementation and integrations#633
Conversation
…ialization - Added a destructor to ConfigurationManager to ensure proper cleanup of JSON configuration objects. - Refactored the constructor to initialize all configuration pointers to nullptr and load configurations from a JSON file. - Updated condition checks in LoadConfFromJSONFile to use logical AND instead of OR for better validation of JSON object types.
- Updated the return values in the parseJsonConf method across multiple configuration files (ChronoGrapher, ChronoKeeper, ChronoPlayer, ChronoVisor) to use the chronolog::CL_SUCCESS constant instead of a hardcoded value of 1 for improved clarity and consistency in success indication. - Adjusted the deployment script to reflect changes in configuration paths for better maintainability.
- Replaced assert statements with conditional checks in the parseJsonConf methods across ChronoGrapher, ChronoKeeper, ChronoPlayer, and ChronoVisor configuration files to improve error handling. - Added error messages to standard output for invalid configuration types, ensuring clearer feedback for configuration issues. - Updated return values to use chl::CL_ERR_INVALID_CONF for consistency in error reporting.
- Added conditional checks in the parseJsonConf methods for CLOCK_CONF and AUTH_CONF to handle parsing errors more gracefully. - Introduced error messages to standard output for invalid configurations, enhancing feedback for users. - Ensured consistent exit behavior on parsing failures by utilizing chronolog::CL_ERR_INVALID_CONF.
… & test/unit/extraction_chain_config
…, ExtractionChain is using variant array instead of argument pack; new KeeperExtractionConfiguration; new KeeperExtractionChain implementation; new GrapherExtractionConfiguration & new GrapherExtractionChain implementation
… and Grapher; added tests/functional/chrono-grapher
This comment was marked as resolved.
This comment was marked as resolved.
iameneko
left a comment
There was a problem hiding this comment.
let me know your thoughts on my comments
| bool is_active() const { return (nullptr != rdma_sender); } | ||
|
|
||
| private: | ||
| tl::engine& sender_tl_engine; // local tl::engine |
There was a problem hiding this comment.
tl::engine& cannot be rebound, so the copy-assignment at ChunkExtractorRDMA.cpp:75
sender_tl_engine = other.get_sender_engine();calls tl::engine::operator= on the externally-owned engine itself, not on the local member. Thallium's copy-assign explicitly runs ~engine() on the LHS before swapping m_impl (thallium/engine.hpp:276-281) — if that's the last reference, finalize() runs on the live process engine; otherwise the upstream engine silently points at a different impl. Either way the "borrowed reference" contract is broken.
Recommend changing the member to tl::engine* sender_tl_engine; so copy-assign rebinds the pointer instead of mutating the engine. Same fix needed in DualEndpointChunkExtractorRDMA.h:40 / DualEndpointChunkExtractorRDMA.cpp:157.
There was a problem hiding this comment.
I see . so the engine is silently finalized .. nice...
this PR contains the code changes for the suite of issues grouped under issue #213
Please, note that there's a follow-up #635 that will have a separate PR