v1.0.0-rc.145 (#55)
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 16m26s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 14m26s
Build Packages / build:rpm (rocky8) (push) Successful in 17m23s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 17m32s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 18m16s
Build Packages / build:rpm (rocky9) (push) Successful in 12m45s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 12m58s
Build Packages / XDS test (durin plugin) (push) Successful in 11m22s
Build Packages / DIALS test (push) Successful in 14m28s
Build Packages / Generate python client (push) Successful in 1m1s
Build Packages / Build documentation (push) Successful in 2m40s
Build Packages / Create release (push) Has been skipped
Build Packages / XDS test (neggia plugin) (push) Successful in 10m52s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 15m2s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 17m25s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 11m49s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 11m34s
Build Packages / Unit tests (push) Successful in 44m51s

This is an UNSTABLE release. The release has significant modifications for HDF5 writing logic - in case of troubles go back to 1.0.0-rc.144.

* **Default HDF5 writing mode is with VDS, not soft-links** - this improves DIALS compatibility and makes format more future-proof, NXmx legacy format might be phased-out in the future.
* XDS plugin: Improve performance of VDS reading.
* jfjoch_writer: Significant improvement on how file systems I/O are handled through a dedicated pass-through VFD.
* jfjoch_writer: Clean-up of HDF5 routines to better handle issues.

Reviewed-on: #55
This commit was merged in pull request #55.
This commit is contained in:
2026-05-06 21:50:02 +02:00
parent 7d34e8a049
commit caef26873e
152 changed files with 1995 additions and 276 deletions
+22 -4
View File
@@ -173,26 +173,40 @@ void StreamWriter::ProcessEndMessage() {
NotifyTcpAck(TCPFrameType::END, !error_state, error_state,
error_state ? TCPAckCode::EndFailed : TCPAckCode::None,
error_state ? err : "");
// To exit main image loop in CollectImages(), state must be finalized
state = StreamWriterState::Finalized;
}
void StreamWriter::FinalizeDataCollection() {
end_time = std::chrono::system_clock::now();
bool finalize_error = false;
if (file_writer && (state != StreamWriterState::Error)) {
try {
hdf5_data_file_statistics = file_writer->Finalize();
} catch (JFJochException &e) {
} catch (const JFJochException &e) {
finalize_error = true;
state = StreamWriterState::Error;
err = e.what();
logger.ErrorException(e);
logger.Error("Error finalizing writing - switching to error state");
} catch (const std::exception &e) {
finalize_error = true;
state = StreamWriterState::Error;
err = e.what();
logger.Error("Error finalizing writing - switching to error state: {}", e.what());
}
} else {
hdf5_data_file_statistics.clear();
}
file_writer.reset();
logger.Info("Data writing finished");
state = StreamWriterState::Finalized;
if (!finalize_error && state != StreamWriterState::Error)
state = StreamWriterState::Finalized;
}
void StreamWriter::CollectImages() {
@@ -206,9 +220,13 @@ void StreamWriter::CollectImages() {
if (image_puller_output.tcp_msg &&
static_cast<TCPFrameType>(image_puller_output.tcp_msg->header.type) == TCPFrameType::CANCEL) {
logger.Warning("Received TCP CANCEL, finalizing data collection");
if (state != StreamWriterState::Idle && state != StreamWriterState::Finalized)
if (state != StreamWriterState::Idle)
FinalizeDataCollection();
NotifyTcpAck(TCPFrameType::CANCEL, true, false, TCPAckCode::None);
const bool error_state = (state == StreamWriterState::Error);
NotifyTcpAck(TCPFrameType::CANCEL, !error_state, error_state,
error_state ? TCPAckCode::EndFailed : TCPAckCode::None,
error_state ? err : "");
state = StreamWriterState::Finalized;
continue;
}