如果存在 arangosearch 视图,ArangDb 3.4.milestone0 会崩溃

ArangDb 3.4.milestone0 crashes if arangosearch view exists

尝试使用 ArangoSearch 的新功能时,我发现 "arangod" 崩溃了,"Segmentation fault"。这发生在两种情况下:

  1. Collection 已经有一个 "arangosearch" 视图,我尝试通过 API;
  2. 上传数据
  3. 如果数据已经加载,尝试创建视图会得到相同的结果,"Segmentation fault"。

我用 GDB 做了一个堆栈跟踪:

2018-05-29T15:12:13Z [51783] INFO You are using a milestone/alpha/beta/preview version ('3.4.milestone0') of ArangoDB
2018-05-29T15:12:13Z [51783] INFO ArangoDB (version 3.4.milestone0 [linux]) is ready for business. Have fun!
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffe84a0700 (LWP 51798)] 0x0000000002062693 in ?? ()
Missing separate debuginfos, use: debuginfo-install glibc-2.17-196.el7_4.2.x86_64 keyutils-libs-1.5.8-3.el7.x86_64 krb5-libs-1.15.1-8.el7.x86_64 libcom_err-1.42.9-10.el7.x86_64 libselinux-2.5-11.el7.x86_64 openssl-libs-1.0.2k-8.el7.x86_64 pcre-8.32-17.el7.x86_64 zlib-1.2.7-17.el7.x86_64
(gdb) where

#0  0x0000000002062693 in ?? ()
#1  0x0000000001f8ffef in ?? ()
#2  0x0000000001f18479 in arangodb::iresearch::IResearchView::insert(arangodb::transaction::Methods&, unsigned long, arangodb::LocalDocumentId const&, arangodb::velocypack::Slice const&, arangodb::iresearch::IResearchLinkMeta const&) ()
#3  0x0000000001ef8c78 in arangodb::iresearch::IResearchLink::insert(arangodb::transaction::Methods*, arangodb::LocalDocumentId const&, arangodb::velocypack::Slice const&, arangodb::Index::OperationMode) ()
#4  0x0000000001f0d59f in arangodb::iresearch::IResearchRocksDBLink::insertInternal(arangodb::transaction::Methods*, arangodb::RocksDBMethods*, arangodb::LocalDocumentId const&, arangodb::velocypack::Slice const&, arangodb::Index::OperationMode) ()
#5  0x00000000010ed2b0 in arangodb::RocksDBCollection::insertDocument(arangodb::transaction::Methods*, arangodb::LocalDocumentId const&, arangodb::velocypack::Slice const&, arangodb::OperationOptions&) const ()
#6  0x00000000010ed77a in arangodb::RocksDBCollection::insert(arangodb::transaction::Methods*, arangodb::velocypack::Slice, arangodb::ManagedDocumentResult&, arangodb::OperationOptions&, unsigned long&, bool, unsigned long&) ()
#7  0x0000000000c24a24 in arangodb::LogicalCollection::insert(arangodb::transaction::Methods*, arangodb::velocypack::Slice, arangodb::ManagedDocumentResult&, arangodb::OperationOptions&, unsigned long&, bool, unsigned long&) ()
#8  0x0000000000b83816 in ?? ()
#9  0x0000000000b8977c in arangodb::transaction::Methods::insertLocal(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, arangodb::velocypack::Slice, arangodb::OperationOptions&) ()
#10 0x0000000000b8a5ad in arangodb::transaction::Methods::insert(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, arangodb::velocypack::Slice, arangodb::OperationOptions const&)
()
#11 0x0000000000ac38e7 in arangodb::RestImportHandler::performImport(arangodb::SingleCollectionTransaction&, arangodb::RestImportResult&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, arangodb::velocypack::Builder const&, bool, arangodb::OperationOptions const&) ()
#12 0x0000000000ac5abb in arangodb::RestImportHandler::createFromJson(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ()
#13 0x0000000000acaacc in arangodb::RestImportHandler::execute() ()
#14 0x0000000000f36e8c in arangodb::rest::RestHandler::executeEngine() ()
#15 0x0000000000f34e38 in arangodb::RestEngine::asyncRun(std::shared_ptr<arangodb::rest::RestHandler>) ()
#16 0x00000000011f07d2 in arangodb::rest::GeneralCommTask::handleRequestDirectly(bool, std::shared_ptr<arangodb::rest::RestHandler>) ()
#17 0x00000000011f0b43 in arangodb::rest::GeneralCommTask::handleRequestSync(std::shared_ptr<arangodb::rest::RestHandler>) ()
#18 0x00000000011f23aa in arangodb::rest::GeneralCommTask::executeRequest(std::unique_ptr<arangodb::GeneralRequest, std::default_delete<arangodb::GeneralRequest> >&&, std::unique_ptr<arangodb::GeneralResponse, std::default_delete<arangodb::GeneralResponse> >&&) ()
#19 0x0000000001182a91 in arangodb::rest::HttpCommTask::processRequest(std::unique_ptr<arangodb::HttpRequest, std::default_delete<arangodb::HttpRequest> >) ()
#20 0x0000000001186805 in arangodb::rest::HttpCommTask::processRead(double) ()
#21 0x00000000011cfcd9 in arangodb::rest::SocketTask::processAll() ()
#22 0x00000000011d1955 in ?? ()
#23 0x00000000011d66c3 in boost::asio::detail::reactive_socket_recv_op<boost::asio::mutable_buffers_1, std::function<void (boost::system::error_code const&, unsigned long)> >::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::task_io_service_operation*, boost::system::error_code const&, unsigned long) ()
#24 0x0000000000b5aa4e in boost::asio::detail::epoll_reactor::descriptor_state::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::task_io_service_operation*, boost::system::error_code const&, unsigned long) ()
#25 0x0000000000b4dc06 in ?? ()
#26 0x00000000012cb4ab in arangodb::Thread::runMe() ()
#27 0x00000000012cb883 in arangodb::Thread::startThread(void*) ()
#28 0x000000000137dd0a in ?? ()
#29 0x00007ffff6cb7e25 in start_thread () from /lib64/libpthread.so.0
#30 0x00007ffff66e334d in clone () from /lib64/libc.so.6
(gdb) 

现有视图属性:

:8629@pubmed1> v0.properties() 
{
  "collections" : [ 
    207 
], 
"commit" : { 
"cleanupIntervalStep" : 10, 
"commitIntervalMsec" : 60000, 
"commitTimeoutMsec" : 5000, 
"consolidate" : { 
  "bytes" : { 
    "intervalStep" : 10, 
    "threshold" : 0.8500000238418579 
  }, 
  "bytes_accum" : { 
    "intervalStep" : 10, 
    "threshold" : 0.8500000238418579 
  }, 
  "count" : { 
    "intervalStep" : 10, 
    "threshold" : 0.8500000238418579 
  }, 
  "fill" : { 
    "intervalStep" : 10, 
    "threshold" : 0.8500000238418579 
  } 
} 
},
"dataPath" : "arangosearch-488",
"locale" : "C", 
"threadsMaxIdle" : 5, 
"threadsMaxTotal" : 5, 
"links" : { 
"pmshort" : { 
  "analyzers" : [ 
    "identity" 
  ], 
  "fields" : { 
  }, 
  "includeAllFields" : true, 
  "trackListPositions" : false, 
  "id" : "496", 
  "type" : "arangosearch", 
  "view" : 488 
} 
  } 
}

你能帮忙吗?两种方式的问题:无法在存在的视图中加载数据,或者如果加载数据则无法创建视图。结果相同:分段错误。 任何建议表示赞赏。 提前致谢!

请注意,我们使用 github 进行问题跟踪; Whosebug的目的是知识题。 您可以通过 https://github.com/arangodb/arangodb/issues

报告问题

此特殊问题已通过 https://github.com/arangodb/arangodb/issues/5146 报告,同时已修复;您可以尝试已经包含此修复程序的夜间构建;将您的网址中的 arangodb34 替换为 nightly

如果您想讨论更多关于 arangosearch 的事情,欢迎来到我们的 slack 频道。