Closed WSaffery closed 4 weeks ago
How did you test the edges were still in the database?
Running g.E()
will throw an exception, as it tries to return edges with endpoint's that don't exist.
I then verified the edges existed on the database section of the web app.
Also running g.E().id()
doesn't cause an exception, the exception is only caused by trying to convert the edge to a string, which then tries to dereferences its endpoints to convert them to strings too.
Ok, then it looks like there is an issue with the delete. I'm trying to reproduce it by using your dataset.
I was able to reproduce the issue. After the deletion of all the vertices, there are 23 edges left in the database. I also fixed a bug in the HTTP serializer used by Studio that prevents returning the results when the connected record.
Checking now if these edges were already disconnected before the delete of vertices.
Ok, found the issue. You were right, the delete skipped some edges. This was due to the iterator from the edge segment (linked list) used for deletion that wasn't going through the whole list. Checking for regressions and if everything passes, I'll push the fix.
Fixed. Thanks for reporting the issue with the dataset, very quick to reproduce it.
Great to hear, thanks for the fast fix.
ArcadeDB Version:
ArcadeDB Server v24.5.1
OS and JDK Version:
Running on Linux 6.8.10-300.fc40.x86_64 - OpenJDK 64-Bit Server VM 17.0.11 ((Red_Hat-17.0.11.0.9-1))
Expected behavior
Dropping vertices should always remove all edges.
Actual behavior
While I've confirmed that generally dropping a vertex drops its edges. For the large dataset I am currently testing, dropping all vertices in one query fails to remove all edges.
I've tested this in both gremlin, and in SQL using a node supertype.
and
The gremlin code has been tested via remote traversal and the web console, the SQL only via the console.
Steps to reproduce
Load the attached database backup, attached here, and then run either
g.V().drop()
ordelete from node
You may need to change your evaluationTimeout in
gremlin-server.yaml
to rung.V().drop()
without timing out. My last run in gremlin took 37454ms and my evaluationTimeout is at 120000 (ms).Apologies I have been unable to easily determine a smaller subset of the database for which the problem persists. I did trim down my original dataset to just include the edge
isLocatedIn
to make the backup smaller.My
gremlin-server.yaml
for posterity