C++ OrientDB library by tglman
C++ OrientDB library by tglman
使用 tglman 的 OrientDB 库并尝试运行示例代码 @ https://github.com/tglman/orientdb-c/wiki/Start
https://github.com/tglman/orientdb-c
我可以连接到数据库并成功在 orientDB 中设置 + 检索一个值 -
但是,当我使用 o_database_document_query
运行查询时,它不会完成执行 - 相反,它只是无限期挂起。
如何解决这个问题?
也许发生了一些死锁,因为它是一个多线程库。
在代码中,它具有诸如o_engine_get_factory
和o_engine_get_storage
,o_database_operation_context
.....
我不太熟悉这些概念或其工作原理。
有什么想法如何进行吗???
我也调试并发现了同样的问题......修复并推送在 GitHub 上!
我想你可以猜到我是谁(从我的昵称(
o_engine_get_factory,o_engine_get_storage,o_database_operation_context
是三个不同的概念:
o_engine_get_factory:是"连接工厂"基于您使用的协议,现在只支持东方"远程">
o_engine_get_storage:是定向数据库实例的低级接口的o_storage的工厂。
o_datebase_operation_context:是与数据库的高级接口,用于管理文档和客户端事务!
该协议的实际实现是在 o_storage_remote.c 和 o_query_engine_remote.c 中,我认为您必须查看第二个协议以尝试发现有关问题的一些内容!
您测试的内容可以给出一些代码示例,以便我可以重现/调试!
TNKS 再见
特格尔曼
我已经找到了错误。在查询后检索记录的"元数据"时,会发生此问题:o_database_document_query
。
这是我的测试代码:
https://gist.github.com/willmoss/6735670
我把套接字输入/输出调试,所以你可以看到问题出在哪里。
https://gist.github.com/willmoss/6735553
在 o_database.c 中,函数 o_database_metadata(( 中的 #290 行创建了一个带有 o_storage_get_metadata_rid
的空白记录。
https://github.com/tglman/orientdb-c/blob/master/src/o_database.c
然后下一行,您尝试使用 o_database_load
从数据库中检索此空白记录。
库挂起在行 int select_ret = epoll_wait(selector->epoll, events, 1, timeout);
- 因为没有从数据库返回任何信息。行 #64。
https://github.com/tglman/orientdb-c/blob/master/src/o_native_socket_selector.c
如果你看一下在RECORD_LOAD之后发送到服务器的字节输出流,它只是'0',没有数据(见上一节(。
https://gist.github.com/willmoss/6735553
我可以在这里问一个问题吗?这段代码对你有什么用?或者可能是因为协议中的一些变化。我正在使用OrientDB Server v1.5.1 (build @BUILD@)
.
另外 - 最重要的是 - 如何解决这个问题? :D
干杯!
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- 将 std::thread by 值推送到列表中
- MATLAB to C++: csvread() not supported by MATLAB Coder
- Makefile by ocaml 和 cpp 扩展名
- C++ OpenCV Randu 函数抛出'Integer division by zero'
- 从函数 BY VALUE 返回数组,返回结构时会发生什么?
- 如何在不受其他文件影响的情况下"by itself" Visual Studio 项目中运行C++文件?
- MacPorts:"Error: clang-4.0 has been replaced by clang-8.0; please install that instead",但我已经安装了clang
- 为什么 c++ 向量没有"delete by index"?
- 这个给定的代码应该将给定的数字转换为尽可能滞后的数字,no.by 用 9.It 替换合适的数字是行不通的
- 传递类 by-value 时,调用方或被调用方是否调用析构函数
- By-ref 参数:这是 std::thread 和 std::bind 之间的不一致吗?
- 转到特定页面后,如何将滑动视图的当前索引设置为选项卡栏"by reference"的当前索引?
- base64 decode with openssl BIO block by block
- 如何在 C++ 中修复"/usr/bin/ld: warning: liblber-2.4.so.2, needed by //usr/lib/x86_64-linux-gnu/libcurl-gnu
- 由mpglib输出的"hip: Can't rewind stream by 74 bits"到底意味着什么?
- 用rvalue参考和变异模板bits bits bys blamda by
- CMake 错误:'target is not built by this project'
- 快速'group by/count' std::vector<std::u16string> 变成 std::map<u16string, int>
- C++ OrientDB library by tglman