Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

MOMgmt* m_pInMemoryObjects 问题

2010-07-16
2012-10-08
  • zheng bowen
    zheng bowen
    2010-07-16

    谷先生,你好
    我在试图了解SFile的 m_pInMemoryObjects的功能,但是遇到了一些问题
    我稍微带动了一下 ./funcs/mrword.cpp 在mr_word_map那个函数里加了一些,如下
    先将一个文件读到 char *buf 里,然后
    string name("/memory/splite");
    string user("test_zheng");
    file->m_pInMemoryObjects->add(name,buf,user);

    但是这样编译通过,运行时报错,错误信息如下:
    ./start_slave: symbol lookup error:
    /home/gefujiang/data/slave/.sphere/4/mr_index.so: undefined symbol:
    _ZN6CGuardC1ER15pthread_mutex_t

    期待您的回答
    谢谢

     
  • Yunhong Gu
    Yunhong Gu
    2010-07-16

    应该是mr_word.so编译时没有连接libudt.so造成的。你可以改一下./examples/funcs/Makefile

     
  • Yunhong Gu
    Yunhong Gu
    2010-07-16

    LDFLAGS = -lstdc++ ../../lib/libcommon.a ../../lib/libudt.a

     
  • zheng bowen
    zheng bowen
    2010-07-16

    谷先生 谢谢你的答复
    上一个问题已经解决了 现在又遇到一个新问题,仍然是关于m_pInMemoryObjects的:
    我现在有两台机器
    106: security server ; master ; slave
    107: slave
    在map里加了这句话
    string name("/memory/splite");
    string user("test_zheng");
    file->m_pInMemoryObjects->add(name,buf,user);
    这时运行出错,错误信息是这样的:
    master:Segmentation fault
    106 slave: 执行不了add
    107 slave:正确执行add了,add返回值是0

    期待您的答复

     
  • Yunhong Gu
    Yunhong Gu
    2010-07-16

    memory object用的是global name space,所以你的两个UDF产生的memory object不能用同一个名字。在你的这个程序里,你
    可以在后面加一个和slave有关的后缀,例如IP等,或者和那个slave上数据有关的id。其实我应该在SFile这个参数里加一个Slave
    ID可能就比较方便了。

    segmentation fault可能是因为master不能处理同名的情况造成的,应该是个bug,我明天检查一下。

     
  • Yunhong Gu
    Yunhong Gu
    2010-07-16

    抱歉这个memory object还比较新,所以文档还没加上。

     
  • zheng bowen
    zheng bowen
    2010-07-16

    应该不是这个问题,因为我只用一个slave也会出现这个问题
    我让106 作security server ; master
    107 作slave
    然后运行./mrword
    同样master报错 Segmentation fault
    而107slave add返回值是0 而且 map reduce 函数都执行了
    client 端打印:
    request shuffler 219.143.216.107 51045
    1 spes found! 1 data seg total.
    connect SPE 219.143.216.107 2
    mapreduce sort accomplished 1279261412
    SPE COMPLETED

     
  • phili joe
    phili joe
    2010-07-16

    对Segmentation fault 查一下堆栈调用发出来

     
  • zheng bowen
    zheng bowen
    2010-07-16

    用gdb debug ./start_master的信息如下:

    0 0x08058759 in Master::processSysCmd (this=0xbfd80c30, ip=@0x8986360,

    port=34381,
    user=0x88a6d58, key=0, id=12, msg=0x8986390) at master.cpp:1123

    1 0x08059875 in Master::processEx (param=0xbfd80c30) at master.cpp:1066

    2 0x007b232f in start_thread () from /lib/libpthread.so.0

    3 0x006ed20e in clone () from /lib/libc.so.6