Skip to content

Commit 7918878

Browse files
committed
Refs #24094. Override max samples in datasharing when infinite.
Signed-off-by: Miguel Company <miguelcompany@eprosima.com>
1 parent 8fc3305 commit 7918878

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

src/cpp/fastdds/publisher/DataWriterImpl.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,20 @@ ReturnCode_t DataWriterImpl::enable()
338338
datasharing.add_domain_id(utils::default_domain_id());
339339
}
340340
w_att.endpoint.set_data_sharing_configuration(datasharing);
341+
342+
// Update pool config for KEEP_ALL when max_samples is infinite
343+
if ((0 == pool_config_.maximum_size) && (KEEP_ALL_HISTORY_QOS == qos_.history().kind))
344+
{
345+
// Override infinite with old default value for max_samples + extra samples
346+
pool_config_.maximum_size = 5000;
347+
if (0 < qos_.resource_limits().extra_samples)
348+
{
349+
pool_config_.maximum_size += static_cast<uint32_t>(qos_.resource_limits().extra_samples);
350+
}
351+
EPROSIMA_LOG_ERROR(DATA_WRITER,
352+
"DataWriter with KEEP_ALL history and infinite max_samples is not compatible with DataSharing. "
353+
"Setting max_samples to " << pool_config_.maximum_size);
354+
}
341355
}
342356
else
343357
{

0 commit comments

Comments
 (0)