Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;tglman提供的OrientDB库_C++_C_Orientdb - Fatal编程技术网

C++ C++;tglman提供的OrientDB库

C++ C++;tglman提供的OrientDB库,c++,c,orientdb,C++,C,Orientdb,tglman使用OrientDB库并尝试运行示例代码@ 我可以连接到数据库并成功设置并检索orientDB中的值- 但是,当我使用o\u database\u document\u query运行查询时,它并没有完成执行,而是无限期地挂起 如何解决这个问题 由于它是一个多线程库,可能会发生一些死锁 在代码中,它有一些概念,如o_engine\u get_factory和o_engine\u get_storage,o_database\u operation\u context 我不太熟悉这些

tglman使用OrientDB库并尝试运行示例代码@

我可以连接到数据库并成功设置并检索orientDB中的值-

但是,当我使用
o\u database\u document\u query
运行查询时,它并没有完成执行,而是无限期地挂起

如何解决这个问题

由于它是一个多线程库,可能会发生一些死锁

在代码中,它有一些概念,如
o_engine\u get_factory
o_engine\u get_storage
o_database\u operation\u context

我不太熟悉这些概念,也不太熟悉它们的工作原理


你知道怎么做吗?

我想你可以猜出我是谁(从我的昵称)

o_engine_get_工厂、o_engine_get_存储、o_数据库_操作_上下文

有三个不同的概念:

o_engine_get_factory:是基于您使用的协议的“连接工厂”,现在只支持orient“remote”

o_engine_get_storage:是o_存储的工厂,它是orient db实例的低级接口

o_数据库\u操作\u上下文:是与数据库的高级接口,用于管理文档和客户端事务

协议的实际实现在o_storage_remote.c和o_query_engine_remote.c中,我认为您必须查看第二个,以尝试发现有关问题的信息

你能给我一些代码示例吗,这样我就可以复制/调试

再见


tglman

我已经找到了漏洞。在查询后检索记录的“元数据”时发生:
o\u数据库\u文档\u查询

以下是我的测试代码:

我将socket输入/输出调试放在这里,以便您可以看到问题所在

在o_database.c中,函数o_database_metadata()中的第290行,您已经用
o_storage\u get_metadata\u rid
创建了一条空白记录

然后在下一行,您尝试使用
o\u database\u load
从数据库检索此空白记录

库挂起在行
int select\u ret=epoll\u wait处(选择器->epoll,事件,1,超时)-因为数据库没有返回任何信息。第64行

如果查看在记录加载后发送到服务器的字节输出流,它只是“0”,没有数据(请参阅最后一节)

我可以在这里问个问题吗。这段代码是如何为您工作的?或者可能是因为协议的一些变化。Im使用的是
OrientDB服务器v1.5.1(build@build@)

最重要的是,如何解决这个问题D


干杯

我也进行了调试,发现了同样的问题。。。修复并在github上推送

您好-找到了错误,请看我下面的评论。谢谢,我已经测试过了。看起来它起作用了。顺便说一句,我还提交了一份关于Makefile:D的小改动的PR