oceanbase

Форк
0
/
ob_mview_timer_task.cpp 
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

19
namespace oceanbase
20
{
21
namespace rootserver
22
{
23
using namespace common;
24

25
int ObMViewTimerTask::schedule_task(const int64_t delay, bool repeate, bool immediate)
26
{
27
  int ret = OB_SUCCESS;
28
  omt::ObSharedTimer *timer = MTL(omt::ObSharedTimer *);
29
  if (OB_ISNULL(timer)) {
30
    ret = OB_INNER_STAT_ERROR;
31
    LOG_WARN("shared timer is NULL", KR(ret));
32
  } else if (OB_FAIL(TG_SCHEDULE(timer->get_tg_id(), *this, delay, repeate, immediate))) {
33
    LOG_WARN("fail to schedule mview timer task", KR(ret), KP(this), K(delay), K(repeate),
34
             K(immediate));
35
  }
36
  return ret;
37
}
38

39
void ObMViewTimerTask::cancel_task()
40
{
41
  int ret = OB_SUCCESS;
42
  omt::ObSharedTimer *timer = MTL(omt::ObSharedTimer *);
43
  if (OB_ISNULL(timer)) {
44
    ret = OB_INNER_STAT_ERROR;
45
    LOG_WARN("shared timer is NULL", KR(ret));
46
  } else {
47
    TG_CANCEL_TASK(timer->get_tg_id(), *this);
48
  }
49
}
50

51
void ObMViewTimerTask::wait_task()
52
{
53
  int ret = OB_SUCCESS;
54
  omt::ObSharedTimer *timer = MTL(omt::ObSharedTimer *);
55
  if (OB_ISNULL(timer)) {
56
    ret = OB_INNER_STAT_ERROR;
57
    LOG_WARN("shared timer is NULL", KR(ret));
58
  } else {
59
    TG_WAIT_TASK(timer->get_tg_id(), *this);
60
  }
61
}
62

63
} // namespace rootserver
64
} // namespace oceanbase
65

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.