oceanbase
64 строки · 1.8 Кб
1/**
2* Copyright (c) 2024 OceanBase
3* OceanBase CE is licensed under Mulan PubL v2.
4* You can use this software according to the terms and conditions of the Mulan PubL v2.
5* You may obtain a copy of Mulan PubL v2 at:
6* http://license.coscl.org.cn/MulanPubL-2.0
7* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
8* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
9* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
10* See the Mulan PubL v2 for more details.
11*/
12
13#define USING_LOG_PREFIX RS
14
15#include "rootserver/mview/ob_mview_timer_task.h"
16#include "observer/omt/ob_multi_tenant.h"
17#include "share/ob_errno.h"
18
19namespace oceanbase
20{
21namespace rootserver
22{
23using namespace common;
24
25int ObMViewTimerTask::schedule_task(const int64_t delay, bool repeate, bool immediate)
26{
27int ret = OB_SUCCESS;
28omt::ObSharedTimer *timer = MTL(omt::ObSharedTimer *);
29if (OB_ISNULL(timer)) {
30ret = OB_INNER_STAT_ERROR;
31LOG_WARN("shared timer is NULL", KR(ret));
32} else if (OB_FAIL(TG_SCHEDULE(timer->get_tg_id(), *this, delay, repeate, immediate))) {
33LOG_WARN("fail to schedule mview timer task", KR(ret), KP(this), K(delay), K(repeate),
34K(immediate));
35}
36return ret;
37}
38
39void ObMViewTimerTask::cancel_task()
40{
41int ret = OB_SUCCESS;
42omt::ObSharedTimer *timer = MTL(omt::ObSharedTimer *);
43if (OB_ISNULL(timer)) {
44ret = OB_INNER_STAT_ERROR;
45LOG_WARN("shared timer is NULL", KR(ret));
46} else {
47TG_CANCEL_TASK(timer->get_tg_id(), *this);
48}
49}
50
51void ObMViewTimerTask::wait_task()
52{
53int ret = OB_SUCCESS;
54omt::ObSharedTimer *timer = MTL(omt::ObSharedTimer *);
55if (OB_ISNULL(timer)) {
56ret = OB_INNER_STAT_ERROR;
57LOG_WARN("shared timer is NULL", KR(ret));
58} else {
59TG_WAIT_TASK(timer->get_tg_id(), *this);
60}
61}
62
63} // namespace rootserver
64} // namespace oceanbase
65