Skip to content

Commit

Permalink
Force unlimited ResourceLimits if lower or equal to zero (#4617)
Browse files Browse the repository at this point in the history
* Refs #20638: Force unlimited ResourceLimits if lower or equal to zero

Signed-off-by: JesusPoderoso <[email protected]>

* Refs #20722: Apply rev suggestions

Signed-off-by: JesusPoderoso <[email protected]>

* Refs #20722: Include check in previous tests

Signed-off-by: JesusPoderoso <[email protected]>

* Refs #20722: Fix test typo

Signed-off-by: JesusPoderoso <[email protected]>

---------

Signed-off-by: JesusPoderoso <[email protected]>
(cherry picked from commit 31b8ad1)
  • Loading branch information
JesusPoderoso committed Apr 10, 2024
1 parent dc6aaf3 commit 00f63fa
Show file tree
Hide file tree
Showing 12 changed files with 816 additions and 20 deletions.
8 changes: 5 additions & 3 deletions include/fastdds/dds/core/policy/QosPolicies.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -1726,19 +1726,21 @@ class ResourceLimitsQosPolicy : public Parameter_t, public QosPolicy
* @brief Specifies the maximum number of data-samples the DataWriter (or DataReader) can manage across all the
* instances associated with it. Represents the maximum samples the middleware can store for any one DataWriter
* (or DataReader). <br>
* By default, 5000.
* Value less or equal to 0 means infinite resources. By default, 5000.
*
* @warning It is inconsistent for this value to be less than max_samples_per_instance.
*/
int32_t max_samples;
/**
* @brief Represents the maximum number of instances DataWriter (or DataReader) can manage. <br>
* By default, 10.
* Value less or equal to 0 means infinite resources. By default, 10.
*
* @warning It is inconsistent if `(max_instances * max_samples_per_instance) > max_samples`.
*/
int32_t max_instances;
/**
* @brief Represents the maximum number of samples of any one instance a DataWriter(or DataReader) can manage. <br>
* By default, 400.
* Value less or equal to 0 means infinite resources. By default, 400.
*
* @warning It is inconsistent for this value to be greater than max_samples.
*/
Expand Down
9 changes: 7 additions & 2 deletions src/cpp/fastdds/publisher/DataWriterHistory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,12 +65,17 @@ DataWriterHistory::DataWriterHistory(
, resource_limited_qos_(topic_att.resourceLimitsQos)
, topic_att_(topic_att)
{
if (resource_limited_qos_.max_instances == 0)
if (resource_limited_qos_.max_samples <= 0)
{
resource_limited_qos_.max_samples = std::numeric_limits<int32_t>::max();
}

if (resource_limited_qos_.max_instances <= 0)
{
resource_limited_qos_.max_instances = std::numeric_limits<int32_t>::max();
}

if (resource_limited_qos_.max_samples_per_instance == 0)
if (resource_limited_qos_.max_samples_per_instance <= 0)
{
resource_limited_qos_.max_samples_per_instance = std::numeric_limits<int32_t>::max();
}
Expand Down
6 changes: 3 additions & 3 deletions src/cpp/fastdds/subscriber/history/DataReaderHistory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,17 +79,17 @@ DataReaderHistory::DataReaderHistory(
, type_(type.get())
, get_key_object_(nullptr)
{
if (resource_limited_qos_.max_samples == 0)
if (resource_limited_qos_.max_samples <= 0)
{
resource_limited_qos_.max_samples = std::numeric_limits<int32_t>::max();
}

if (resource_limited_qos_.max_instances == 0)
if (resource_limited_qos_.max_instances <= 0)
{
resource_limited_qos_.max_instances = std::numeric_limits<int32_t>::max();
}

if (resource_limited_qos_.max_samples_per_instance == 0)
if (resource_limited_qos_.max_samples_per_instance <= 0)
{
resource_limited_qos_.max_samples_per_instance = std::numeric_limits<int32_t>::max();
}
Expand Down
9 changes: 7 additions & 2 deletions src/cpp/fastrtps_deprecated/publisher/PublisherHistory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,12 +66,17 @@ PublisherHistory::PublisherHistory(
, resource_limited_qos_(topic_att.resourceLimitsQos)
, topic_att_(topic_att)
{
if (resource_limited_qos_.max_instances == 0)
if (resource_limited_qos_.max_samples <= 0)
{
resource_limited_qos_.max_samples = std::numeric_limits<int32_t>::max();
}

if (resource_limited_qos_.max_instances <= 0)
{
resource_limited_qos_.max_instances = std::numeric_limits<int32_t>::max();
}

if (resource_limited_qos_.max_samples_per_instance == 0)
if (resource_limited_qos_.max_samples_per_instance <= 0)
{
resource_limited_qos_.max_samples_per_instance = std::numeric_limits<int32_t>::max();
}
Expand Down
6 changes: 3 additions & 3 deletions src/cpp/fastrtps_deprecated/subscriber/SubscriberHistory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -94,17 +94,17 @@ SubscriberHistory::SubscriberHistory(
get_key_object_ = type_->createData();
}

if (resource_limited_qos_.max_samples == 0)
if (resource_limited_qos_.max_samples <= 0)
{
resource_limited_qos_.max_samples = std::numeric_limits<int32_t>::max();
}

if (resource_limited_qos_.max_instances == 0)
if (resource_limited_qos_.max_instances <= 0)
{
resource_limited_qos_.max_instances = std::numeric_limits<int32_t>::max();
}

if (resource_limited_qos_.max_samples_per_instance == 0)
if (resource_limited_qos_.max_samples_per_instance <= 0)
{
resource_limited_qos_.max_samples_per_instance = std::numeric_limits<int32_t>::max();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,12 +77,17 @@ class DataWriterHistory : public WriterHistory
, resource_limited_qos_(topic_att.resourceLimitsQos)
, topic_att_(topic_att)
{
if (resource_limited_qos_.max_instances == 0)
if (resource_limited_qos_.max_samples <= 0)
{
resource_limited_qos_.max_samples = std::numeric_limits<int32_t>::max();
}

if (resource_limited_qos_.max_instances <= 0)
{
resource_limited_qos_.max_instances = std::numeric_limits<int32_t>::max();
}

if (resource_limited_qos_.max_samples_per_instance == 0)
if (resource_limited_qos_.max_samples_per_instance <= 0)
{
resource_limited_qos_.max_samples_per_instance = std::numeric_limits<int32_t>::max();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,17 @@ class PublisherHistory : public WriterHistory
, resource_limited_qos_(topic_att.resourceLimitsQos)
, topic_att_(topic_att)
{
if (resource_limited_qos_.max_instances == 0)
if (resource_limited_qos_.max_samples <= 0)
{
resource_limited_qos_.max_samples = std::numeric_limits<int32_t>::max();
}

if (resource_limited_qos_.max_instances <= 0)
{
resource_limited_qos_.max_instances = std::numeric_limits<int32_t>::max();
}

if (resource_limited_qos_.max_samples_per_instance == 0)
if (resource_limited_qos_.max_samples_per_instance <= 0)
{
resource_limited_qos_.max_samples_per_instance = std::numeric_limits<int32_t>::max();
}
Expand Down
2 changes: 1 addition & 1 deletion test/performance/throughput/ThroughputPublisher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -525,7 +525,7 @@ void ThroughputPublisher::run(
else
{
// Ensure that the max samples is at least the demand
if (dw_qos.resource_limits().max_samples < 0 ||
if (dw_qos.resource_limits().max_samples <= 0 ||
static_cast<uint32_t>(dw_qos.resource_limits().max_samples) < max_demand)
{
logWarning(THROUGHPUTPUBLISHER, "Setting resource limit max samples to " << max_demand);
Expand Down
2 changes: 1 addition & 1 deletion test/performance/throughput/ThroughputSubscriber.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -579,7 +579,7 @@ int ThroughputSubscriber::process_message()
else
{
// Ensure that the max samples is at least the demand
if (dr_qos.resource_limits().max_samples < 0 ||
if (dr_qos.resource_limits().max_samples <= 0 ||
static_cast<uint32_t>(dr_qos.resource_limits().max_samples) < max_demand)
{
logWarning(THROUGHPUTSUBSCRIBER,
Expand Down
Loading

0 comments on commit 00f63fa

Please sign in to comment.