We have recently noticed these errors being thrown for one of our edge collections. None of the recommendations to unload and load index back helped.
The index that this error log referenced is the default index (_from, _to indexes) created by ArangoDB automatically and I have no control of. I think this might explain why index unload/load suggestion didn't work.
In the meantime, this is not just an annoyance, due to the issue certain queries don't produce results that we expect.
Unfortunately, I could not find any suggestions on how to address the issue, and I'm wondering if ArangoDB devs can suggest a solution?
The error logs I was referring to
2020-04-10T03:44:10Z [1] ERROR [3acb3] {graphs} Could not extract indexed edge document, return 'null' instead. This is most likely a caching issue. Try: 'db.contributor_action.unload(); db.contributor_action.load()' in arangosh to fix this.
2020-04-10T03:44:10Z [1] ERROR [3acb3] {graphs} Could not extract indexed edge document, return 'null' instead. This is most likely a caching issue. Try: 'db.contributor_action.unload(); db.contributor_action.load()' in arangosh to fix this.
2020-04-10T03:44:10Z [1] ERROR [3acb3] {graphs} Could not extract indexed edge document, return 'null' instead. This is most likely a caching issue. Try: 'db.contributor_action.unload(); db.contributor_action.load()' in arangosh to fix this.
2020-04-10T03:44:10Z [1] ERROR [3acb3] {graphs} Could not extract indexed edge document, return 'null' instead. This is most likely a caching issue. Try: 'db.contributor_action.unload(); db.contributor_action.load()' in arangosh to fix this.
2020-04-10T03:44:10Z [1] ERROR [3acb3] {graphs} Could not extract indexed edge document, return 'null' instead. This is most likely a caching issue. Try: 'db.contributor_action.unload(); db.contributor_action.load()' in arangosh to fix this.
AQL example that exposes the issue
LET c1 = (
FOR ca in contributor_action
COLLECT WITH COUNT INTO count
RETURN count
)[0]
LET c2 = (
FOR ca in contributor_action
FOR c IN contributor FILTER ca._from == c._id
COLLECT WITH COUNT INTO count
RETURN count
)[0]
RETURN {c1, c2}
Result shows the discrepancy between AQL execution with the index and without
{
"c1": 1123421,
"c2": 1121787
}