discard ObChunkRowDE mod && do not push view task when queue size almost full

This commit is contained in:
18523270951@163.com
2023-09-09 11:44:07 +00:00
committed by ob-robot
parent e1081698d6
commit de8174ebf2
36 changed files with 68 additions and 55 deletions

View File

@ -267,7 +267,10 @@ void ObMaintainDepInfoTaskQueue::run2()
if (task->get_retry_times() > 0) {
task->set_retry_times(task->get_retry_times() - 1);
task->set_last_execute_time(ObTimeUtility::current_time());
if (OB_FAIL(queue_.push(task))) {
if (is_queue_almost_full()) {
ret = OB_SIZE_OVERFLOW;
LOG_WARN("push task to queue failed", K(ret));
} else if (OB_FAIL(queue_.push(task))) {
LOG_WARN("push task to queue failed", K(ret));
} else {
rescheduled = true;

View File

@ -90,6 +90,7 @@ class ObMaintainDepInfoTaskQueue: public share::ObAsyncTaskQueue
{
public:
static const int64_t INIT_BKT_SIZE = 512;
constexpr static const double MAX_QUEUE_USAGE_RATIO = 0.8;
ObMaintainDepInfoTaskQueue() : last_execute_time_(0) {}
virtual ~ObMaintainDepInfoTaskQueue()
{
@ -102,6 +103,7 @@ public:
{ last_execute_time_ = execute_time; }
int add_view_id_to_set(const uint64_t view_id) { return view_info_set_.set_refactored(view_id); }
int erase_view_id_from_set(const uint64_t view_id) { return view_info_set_.erase_refactored(view_id); }
bool is_queue_almost_full() const { return queue_.size() > queue_.capacity() * MAX_QUEUE_USAGE_RATIO; }
private:
int64_t last_execute_time_;
common::hash::ObHashSet<uint64_t, common::hash::ReadWriteDefendMode> view_info_set_;