datafabricrus / scylla-rdf Goto Github PK
View Code? Open in Web Editor NEWAn RDF store based on ScyllaDB and Eclipse RDF4J
License: MIT License
An RDF store based on ScyllaDB and Eclipse RDF4J
License: MIT License
It'd be helpful to have information about the steps which the query executor did and how much time each of them took. A library supporting OpenTracing could be used for that.
I successfully deployed scylla-rdf to docker then got into RDF4J Workbench and can create repositories. The problem is that I can't do anything else, when I try to access Namespaces, Contexts, and all other tabs I get similar exceptions:
HTTP Status 500 โ Internal Server Error
Type Exception Report
Message org.eclipse.rdf4j.repository.RepositoryException: org.eclipse.rdf4j.repository.RepositoryException: com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /0.0.4.87:9042 (com.datastax.driver.core.exceptions.TransportException: [/0.0.4.87:9042] Cannot connect))
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
javax.servlet.ServletException: org.eclipse.rdf4j.repository.RepositoryException: org.eclipse.rdf4j.repository.RepositoryException: com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /0.0.4.87:9042 (com.datastax.driver.core.exceptions.TransportException: [/0.0.4.87:9042] Cannot connect))
org.eclipse.rdf4j.workbench.proxy.WorkbenchServlet.handleRequest(WorkbenchServlet.java:140)
org.eclipse.rdf4j.workbench.proxy.WorkbenchServlet.service(WorkbenchServlet.java:103)
org.eclipse.rdf4j.workbench.proxy.WorkbenchGateway.service(WorkbenchGateway.java:114)
org.eclipse.rdf4j.workbench.base.AbstractServlet.service(AbstractServlet.java:125)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109)
org.eclipse.rdf4j.workbench.proxy.CacheFilter.doFilter(CacheFilter.java:61)
org.eclipse.rdf4j.workbench.proxy.CookieCacheControlFilter.doFilter(CookieCacheControlFilter.java:53)
Root Cause
org.eclipse.rdf4j.repository.RepositoryException: org.eclipse.rdf4j.repository.RepositoryException: com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /0.0.4.87:9042 (com.datastax.driver.core.exceptions.TransportException: [/0.0.4.87:9042] Cannot connect))
org.eclipse.rdf4j.http.client.SPARQLProtocolSession.execute(SPARQLProtocolSession.java:1019)
org.eclipse.rdf4j.http.client.SPARQLProtocolSession.executeOK(SPARQLProtocolSession.java:958)
org.eclipse.rdf4j.http.client.SPARQLProtocolSession.sendTupleQueryViaHttp(SPARQLProtocolSession.java:755)
org.eclipse.rdf4j.http.client.SPARQLProtocolSession.getTupleQueryResult(SPARQLProtocolSession.java:690)
org.eclipse.rdf4j.http.client.RDF4JProtocolSession.getNamespaces(RDF4JProtocolSession.java:359)
org.eclipse.rdf4j.http.client.RDF4JProtocolSession.getNamespaces(RDF4JProtocolSession.java:344)
org.eclipse.rdf4j.repository.http.HTTPRepositoryConnection.getNamespaces(HTTPRepositoryConnection.java:726)
org.eclipse.rdf4j.workbench.commands.NamespacesServlet.service(NamespacesServlet.java:49)
org.eclipse.rdf4j.workbench.base.TransformationServlet.service(TransformationServlet.java:111)
org.eclipse.rdf4j.workbench.base.TransformationServlet.service(TransformationServlet.java:95)
org.eclipse.rdf4j.workbench.base.AbstractServlet.service(AbstractServlet.java:125)
org.eclipse.rdf4j.workbench.proxy.ProxyRepositoryServlet.service(ProxyRepositoryServlet.java:99)
org.eclipse.rdf4j.workbench.proxy.WorkbenchServlet.service(WorkbenchServlet.java:188)
org.eclipse.rdf4j.workbench.proxy.WorkbenchServlet.handleRequest(WorkbenchServlet.java:128)
org.eclipse.rdf4j.workbench.proxy.WorkbenchServlet.service(WorkbenchServlet.java:103)
org.eclipse.rdf4j.workbench.proxy.WorkbenchGateway.service(WorkbenchGateway.java:114)
org.eclipse.rdf4j.workbench.base.AbstractServlet.service(AbstractServlet.java:125)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109)
org.eclipse.rdf4j.workbench.proxy.CacheFilter.doFilter(CacheFilter.java:61)
org.eclipse.rdf4j.workbench.proxy.CookieCacheControlFilter.doFilter(CookieCacheControlFilter.java:53)
Here is what I do to deploy:
3.7.1-scylla
branch and RDF4J (rdf4j, rdf4j-storage and rdf4j-tools) develop
branch.mvn clean install
docker-compose -f docker-compose-dev.yml up -d
http://localhost
and get to RDF4J Workbench. No password is required for some reason.Modify
options, but if try to add some data it throws the same exception.Am I doing something wrong?
This is what I see in the summary of the repository:
And all repositories:
I get the same result on two different PCs running Windows 10 Pro.
Edit: I found how to login as admin but it did't solve the issue.
The approach is inspired by the M. Stocker's work.
The cardinality of a triple pattern (i.e. card(t)
) is equal to card(t) = card(s) * card(p) * card(o)
.
The card(s)
is based on an estimate from ScyllaDB which maintains "Number of partitions (estimate)" for each table, so we can count the number of distinct subjects by the number of partitions in the S_POC table. Thus card(s) = card(*) / <number of partitions in S_POC>
where card(*)
is the total number of triples in triplestore.
Same as card(s)
, the card(o)
is based on the estimate from ScyllaDB for the O_SPC table. Thus card(o) = card(*) / <number of partitions in O_SPC>
.
The card(p)
is fetched from a separate index where each p
has the number of triples containing it. Such index is quite small (e.g. for http://tree.datafabric.cc it's just ~680Kb on disk) and easy to maintain (it's a counter which can be incremented and decremented). But still it's only an estimate if insert the same triple 2 times, then the counter is incremented 2 times as well.
If both p
and o
are bound, then instead of card(o)
we use card(p, o)
. The card(p, o)
denotes the number of triples containing both p
and o
. It's fetched from a separate index where for each p
there is a histogram.
The same way, to estimate the card(*)
and in future card(c)
, a separate index is maintained, similarly to the card(p)
's one.
Limitations:
card(c)
.nodetool flush
after any write to ScyllaDB, so it'd recompute the estimates.Estimates from ScyllaDB are queried through the JMX API which's also used by nodetool
.
DELETE...WHERE...
requires the primary key, therefore triples matching a given non-default context have to be fetched with SELECT * WHERE ... ALLOW FILTERING
first and only then deleted by DELETE
query.
Got the following error (console output) when tried to file through the "Add RDF" functionality:
scylla-rdf_1 | at com.datastax.driver.core.exceptions.InvalidQueryException.copy(InvalidQueryException.java:49)
scylla-rdf_1 | at com.datastax.driver.core.DriverThrowables.propagateCause(DriverThrowables.java:35)
scylla-rdf_1 | at com.datastax.driver.core.DefaultResultSetFuture.getUninterruptibly(DefaultResultSetFuture.java:293)
scylla-rdf_1 | at com.datastax.driver.core.AbstractSession.execute(AbstractSession.java:58)
scylla-rdf_1 | at cc.datafabric.scyllardf.dao.impl.ScyllaRDFIndexDAO.setNamespace(ScyllaRDFIndexDAO.kt:137)
scylla-rdf_1 | at cc.datafabric.scyllardf.sail.ScyllaRDFSailConnection.setNamespaceInternal(ScyllaRDFSailConnection.kt:40)
scylla-rdf_1 | at org.eclipse.rdf4j.sail.helpers.AbstractSailConnection.setNamespace(AbstractSailConnection.java:621)
scylla-rdf_1 | at org.eclipse.rdf4j.repository.sail.SailRepositoryConnection.setNamespace(SailRepositoryConnection.java:354)
scylla-rdf_1 | at org.eclipse.rdf4j.repository.util.RDFInserter.addNamespace(RDFInserter.java:54)
scylla-rdf_1 | at org.eclipse.rdf4j.repository.util.AbstractRDFInserter.endRDF(AbstractRDFInserter.java:138)
scylla-rdf_1 | at org.eclipse.rdf4j.rio.turtle.TurtleParser.parse(TurtleParser.java:186)
scylla-rdf_1 | at org.eclipse.rdf4j.rio.turtle.TurtleParser.parse(TurtleParser.java:130)
scylla-rdf_1 | at org.eclipse.rdf4j.repository.util.RDFLoader.loadInputStreamOrReader(RDFLoader.java:241)
scylla-rdf_1 | at org.eclipse.rdf4j.repository.util.RDFLoader.load(RDFLoader.java:168)
scylla-rdf_1 | at org.eclipse.rdf4j.repository.base.AbstractRepositoryConnection.add(AbstractRepositoryConnection.java:289)
scylla-rdf_1 | at org.eclipse.rdf4j.http.server.repository.statements.StatementsController.getAddDataResult(StatementsController.java:398)
scylla-rdf_1 | at org.eclipse.rdf4j.http.server.repository.statements.StatementsController.handleRequestInternal(StatementsController.java:117)
scylla-rdf_1 | at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:174)
scylla-rdf_1 | at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:50)
scylla-rdf_1 | at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
scylla-rdf_1 | at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
scylla-rdf_1 | at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
scylla-rdf_1 | at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
scylla-rdf_1 | at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
scylla-rdf_1 | at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
scylla-rdf_1 | at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
scylla-rdf_1 | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
scylla-rdf_1 | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
scylla-rdf_1 | at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
scylla-rdf_1 | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
scylla-rdf_1 | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
scylla-rdf_1 | at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109)
scylla-rdf_1 | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
scylla-rdf_1 | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
scylla-rdf_1 | at com.github.ziplet.filter.compression.CompressingFilter.doFilter(CompressingFilter.java:300)
scylla-rdf_1 | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
scylla-rdf_1 | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
scylla-rdf_1 | at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
scylla-rdf_1 | at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
scylla-rdf_1 | at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
scylla-rdf_1 | at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
scylla-rdf_1 | at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
scylla-rdf_1 | at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
scylla-rdf_1 | at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
scylla-rdf_1 | at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
scylla-rdf_1 | at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
scylla-rdf_1 | at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
scylla-rdf_1 | at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:836)
scylla-rdf_1 | at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1839)
scylla-rdf_1 | at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
scylla-rdf_1 | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
scylla-rdf_1 | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
scylla-rdf_1 | at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
scylla-rdf_1 | at java.lang.Thread.run(Thread.java:748)
scylla-rdf_1 | Caused by: com.datastax.driver.core.exceptions.InvalidQueryException: Key may not be empty
scylla-rdf_1 | at com.datastax.driver.core.Responses$Error.asException(Responses.java:181)
scylla-rdf_1 | at com.datastax.driver.core.DefaultResultSetFuture.onSet(DefaultResultSetFuture.java:215)
scylla-rdf_1 | at com.datastax.driver.core.RequestHandler.setFinalResult(RequestHandler.java:228)
scylla-rdf_1 | at com.datastax.driver.core.RequestHandler.access$2600(RequestHandler.java:62)
scylla-rdf_1 | at com.datastax.driver.core.RequestHandler$SpeculativeExecution.setFinalResult(RequestHandler.java:1005)
scylla-rdf_1 | at com.datastax.driver.core.RequestHandler$SpeculativeExecution.onSet(RequestHandler.java:808)
scylla-rdf_1 | at com.datastax.driver.core.Connection$Dispatcher.channelRead0(Connection.java:1233)
scylla-rdf_1 | at com.datastax.driver.core.Connection$Dispatcher.channelRead0(Connection.java:1151)
scylla-rdf_1 | at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
scylla-rdf_1 | at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
scylla-rdf_1 | at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
scylla-rdf_1 | at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:323)
scylla-rdf_1 | at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:297)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
scylla-rdf_1 | at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)
scylla-rdf_1 | at com.datastax.driver.core.InboundTrafficMeter.channelRead(InboundTrafficMeter.java:38)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
scylla-rdf_1 | at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
scylla-rdf_1 | at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965)
scylla-rdf_1 | at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
scylla-rdf_1 | at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:644)
scylla-rdf_1 | at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:579)
scylla-rdf_1 | at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:496)
scylla-rdf_1 | at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:458)
scylla-rdf_1 | at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:897)
scylla-rdf_1 | at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
scylla-rdf_1 | ... 1 common frames omitted
The query (a kind of) that leads to the exception:
SELECT ?s
WHERE {
GRAPH <http://example.com/graphname> {
?s a :ClassName .
}
}
The exception:
scylla-rdf_1 | org.eclipse.rdf4j.query.QueryEvaluationException: java.util.concurrent.ExecutionException: com.datastax.driver.core.exceptions.InvalidQueryException: Invalid null value for clustering key part subject
scylla-rdf_1 | at org.eclipse.rdf4j.sail.evaluation.SailTripleSource$1.convert(SailTripleSource.java:49)
scylla-rdf_1 | at org.eclipse.rdf4j.sail.evaluation.SailTripleSource$1.convert(SailTripleSource.java:45)
scylla-rdf_1 | at org.eclipse.rdf4j.common.iteration.ExceptionConvertingIteration.hasNext(ExceptionConvertingIteration.java:69)
scylla-rdf_1 | at org.eclipse.rdf4j.common.iteration.IterationWrapper.hasNext(IterationWrapper.java:63)
scylla-rdf_1 | at org.eclipse.rdf4j.common.iteration.FilterIteration.findNextElement(FilterIteration.java:74)
scylla-rdf_1 | at org.eclipse.rdf4j.common.iteration.FilterIteration.hasNext(FilterIteration.java:45)
scylla-rdf_1 | at org.eclipse.rdf4j.common.iteration.ConvertingIteration.hasNext(ConvertingIteration.java:62)
scylla-rdf_1 | at org.eclipse.rdf4j.common.iteration.ConvertingIteration.hasNext(ConvertingIteration.java:62)
scylla-rdf_1 | at org.eclipse.rdf4j.common.iteration.IterationWrapper.hasNext(IterationWrapper.java:63)
scylla-rdf_1 | at org.eclipse.rdf4j.sail.helpers.SailBaseIteration.hasNext(SailBaseIteration.java:41)
scylla-rdf_1 | at org.eclipse.rdf4j.common.iteration.IterationWrapper.hasNext(IterationWrapper.java:63)
scylla-rdf_1 | at org.eclipse.rdf4j.query.QueryResults.report(QueryResults.java:225)
scylla-rdf_1 | at org.eclipse.rdf4j.http.server.repository.TupleQueryResultView.renderInternal(TupleQueryResultView.java:99)
scylla-rdf_1 | at org.eclipse.rdf4j.http.server.repository.QueryResultView.render(QueryResultView.java:63)
scylla-rdf_1 | at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1371)
scylla-rdf_1 | at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1117)
scylla-rdf_1 | at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1056)
scylla-rdf_1 | at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
scylla-rdf_1 | at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
scylla-rdf_1 | at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908)
scylla-rdf_1 | at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
scylla-rdf_1 | at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
scylla-rdf_1 | at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
scylla-rdf_1 | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
scylla-rdf_1 | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
scylla-rdf_1 | at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
scylla-rdf_1 | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
scylla-rdf_1 | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
scylla-rdf_1 | at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109)
scylla-rdf_1 | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
scylla-rdf_1 | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
scylla-rdf_1 | at com.github.ziplet.filter.compression.CompressingFilter.doFilter(CompressingFilter.java:300)
scylla-rdf_1 | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
scylla-rdf_1 | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
scylla-rdf_1 | at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
scylla-rdf_1 | at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
scylla-rdf_1 | at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
scylla-rdf_1 | at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
scylla-rdf_1 | at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
scylla-rdf_1 | at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
scylla-rdf_1 | at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
scylla-rdf_1 | at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
scylla-rdf_1 | at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
scylla-rdf_1 | at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
scylla-rdf_1 | at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853)
scylla-rdf_1 | at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587)
scylla-rdf_1 | at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
scylla-rdf_1 | at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
scylla-rdf_1 | at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
scylla-rdf_1 | at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
scylla-rdf_1 | at java.base/java.lang.Thread.run(Thread.java:834)
scylla-rdf_1 | Caused by: java.util.concurrent.ExecutionException: com.datastax.driver.core.exceptions.InvalidQueryException: Invalid null value for clustering key part subject
scylla-rdf_1 | at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:299)
scylla-rdf_1 | at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:286)
scylla-rdf_1 | at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)
scylla-rdf_1 | at cc.datafabric.scyllardf.dao.MultipleResultSetFutureIteration.hasNext(MultipleResultSetFutureIteration.kt:38)
scylla-rdf_1 | at cc.datafabric.scyllardf.dao.SPOCIteration.hasNext(SPOCIteration.kt:22)
scylla-rdf_1 | at cc.datafabric.scyllardf.coder.CoderFacade$toStatementIteration$1.hasNext(CoderFacade.kt:222)
scylla-rdf_1 | at org.eclipse.rdf4j.common.iteration.IterationWrapper.hasNext(IterationWrapper.java:63)
scylla-rdf_1 | at org.eclipse.rdf4j.sail.helpers.SailBaseIteration.hasNext(SailBaseIteration.java:41)
scylla-rdf_1 | at org.eclipse.rdf4j.common.iteration.ExceptionConvertingIteration.hasNext(ExceptionConvertingIteration.java:63)
scylla-rdf_1 | ... 48 common frames omitted
scylla-rdf_1 | Caused by: com.datastax.driver.core.exceptions.InvalidQueryException: Invalid null value for clustering key part subject
scylla-rdf_1 | at com.datastax.driver.core.Responses$Error.asException(Responses.java:181)
scylla-rdf_1 | at com.datastax.driver.core.DefaultResultSetFuture.onSet(DefaultResultSetFuture.java:215)
scylla-rdf_1 | at com.datastax.driver.core.RequestHandler.setFinalResult(RequestHandler.java:229)
scylla-rdf_1 | at com.datastax.driver.core.RequestHandler.access$2600(RequestHandler.java:63)
scylla-rdf_1 | at com.datastax.driver.core.RequestHandler$SpeculativeExecution.setFinalResult(RequestHandler.java:1011)
scylla-rdf_1 | at com.datastax.driver.core.RequestHandler$SpeculativeExecution.onSet(RequestHandler.java:814)
scylla-rdf_1 | at com.datastax.driver.core.Connection$Dispatcher.channelRead0(Connection.java:1286)
scylla-rdf_1 | at com.datastax.driver.core.Connection$Dispatcher.channelRead0(Connection.java:1204)
scylla-rdf_1 | at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
scylla-rdf_1 | at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
scylla-rdf_1 | at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
scylla-rdf_1 | at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:323)
scylla-rdf_1 | at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:297)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
scylla-rdf_1 | at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)
scylla-rdf_1 | at com.datastax.driver.core.InboundTrafficMeter.channelRead(InboundTrafficMeter.java:38)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
scylla-rdf_1 | at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
scylla-rdf_1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
scylla-rdf_1 | at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965)
scylla-rdf_1 | at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
scylla-rdf_1 | at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:644)
scylla-rdf_1 | at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:579)
scylla-rdf_1 | at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:496)
scylla-rdf_1 | at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:458)
scylla-rdf_1 | at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:897)
scylla-rdf_1 | at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
scylla-rdf_1 | ... 1 common frames omitted
The card(c)
, card(p)
and card(p, o)
may be below zero, which is wrong. Maybe fixed by using the conditional UPDATE which would check if the counter is not less than the decrement.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.