discard ObChunkRowDE mod && do not push view task when queue size almost full
This commit is contained in:
committed by
ob-robot
parent
e1081698d6
commit
de8174ebf2
@ -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;
|
||||
|
||||
@ -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_;
|
||||
|
||||
Reference in New Issue
Block a user