程序调用 obcdc接口 抽取日志,结果异常退出

【 使用环境 】测试环境
【 数据库 】OceanBase_CE 4.3.4.0
【 工具 】obcdc 日志抽取接口

【问题描述】

  1. 按照文档的开发说明编写日志抽取代码,obcdc.cpp ,官网链接:
    obcdc 开发说明-V4.3.4-OceanBase 数据库文档-分布式数据库使用文档

  2. 调用 g++ 编译程序,命令:
    g++ obcdc.cpp -I./include -L./obcdc-ce-4.3.4.x-access -lobcdc -std=c++11 -g

  3. 运行程序,执行到 obcdc_instance.init 函数卡住,然后异常退出,产生core文件

  4. 程序代码、配置文件和core截图见附件

【 附件 】


obcdc.zip (2.0 KB)

2 个赞

编译参数里加上-fPIC试试

不core了
现在卡在 obcdc_instance.init(config_path, 0); 函数不动了

程序日志:
[cent@bogon 03]$ ./a.out
go into create_obcdc_instance
create_obcdc_instance OB_SUCCESS
into obcdc_instance.init

init 函数代码:
int init_obcdc_instance(IObCDCInstance &obcdc_instance)
{
int ret = OB_SUCCESS;
const char *config_path = “/home/cent/Documents/tmp/03/conf/libobcdc.conf”;

printf(“into obcdc_instance.init \n”);
ret = obcdc_instance.init(config_path, 0);
printf(“into obcdc_instance.launch \n”);
ret = obcdc_instance.launch();

return ret;
}

1 个赞

日志文件 libobcdc.log 一直有更新
截图如下:

1 个赞

上图都是INFO日志,没有报错。可以试试grep EDIAG libobcdc.log看下

1 个赞

没有 EDIAG 的日志

1 个赞

方便的话是否可以把libobcdc.log*的日志打包发上来?

1 个赞

大概跑了5分钟
libobcdc.log.gz (661.2 KB)

日志里面看,CDC已经完成初始化(对应init接口),并 完成了启动(对应launch接口)。位点推进实时(见下图)

1 个赞

用法这里也需要调整下,如果上一步的ret不是OB_SUCCESS,是不能进行下一步的,即init/launch两个函数执行前,需要检查ret。

1 个赞

这个日志看得我有点迷,如果说init和launch都成功了,按照这个代码应该会打出相应的日志(图1),可实际上没有(图2)

1 个赞

在前面打包好的日志里有如上关键字

$ grep obcdc_instance libobcdc-ce.log
into obcdc_instance.launch
init_obcdc_instance OB_SUCCESS
1 个赞

NB
确实有,原来是写到 libobcdc.log 里了,我再查查后面的流程

1 个赞

可以取到增量日志了,谢谢!