gpt4 book ai didi

java - Sparksee 在 session 关闭时崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 11:37:02 25 4
gpt4 key购买 nike

当我执行关系的创建时,它会在 session 关闭时崩溃。

代码:

    @Override
public boolean applyCreate(final RelationshipStorage storage, final long snapshotId)
{
final Session sess = db.newSession();
final Graph graph = sess.getGraph();
final Objects startObjs = findNode(graph, storage.getStartNode());
final Objects endObjs = findNode(graph, storage.getEndNode());

if(startObjs == null || endObjs == null)
{
if(startObjs != null)
{
startObjs.close();
}
if(endObjs != null)
{
endObjs.close();
}
sess.close();
return false;
}

final ObjectsIterator startIt = startObjs.iterator();
final ObjectsIterator endIt = endObjs.iterator();

while(startIt.hasNext())
{
long startNode = startIt.next();
while (endIt.hasNext())
{
final long endNode = endIt.next();

int edgeType = graph.findType(storage.getId());
if (Type.InvalidType == edgeType)
{
edgeType = graph.newEdgeType(storage.getId(), true, false);
}

final long relationship = graph.findOrCreateEdge(edgeType, startNode, endNode);
for (final Map.Entry<String, Object> entry : storage.getProperties().entrySet())
{
graph.setAttribute(relationship,
SparkseeUtils.createOrFindAttributeType(entry.getKey(), entry.getValue(), Type.GlobalType, graph),
SparkseeUtils.getValue(entry.getValue()));
}

int snapshotAttributeId = SparkseeUtils.createOrFindAttributeType(Constants.TAG_SNAPSHOT_ID, snapshotId, Type.GlobalType, graph);
graph.setAttribute(relationship, snapshotAttributeId, SparkseeUtils.getValue(snapshotId));

try
{
int hashAttributeId = SparkseeUtils.createOrFindAttributeType(Constants.TAG_HASH, " ", Type.GlobalType, graph);
graph.setAttribute(relationship, hashAttributeId, SparkseeUtils.getValue(HashCreator.sha1FromRelationship(storage)));
}
catch (NoSuchAlgorithmException e)
{
Log.getLogger().warn("Couldn't execute create node transaction in server: " + id, e);
endObjs.close();
startObjs.close();
startIt.close();
endIt.close();
sess.close();
return false;
}
Log.getLogger().warn("Successfully executed create relationship transaction in server: " + id);
}
}

startObjs.close();
endObjs.close();
startIt.close();
endIt.close();
sess.close();
return true;
}

/**
* Return a Objects array matching the nodeType and properties.
* @param graph the graph.
* @param storage the storage of the node.
* @return Objects which match the attributes.
*/
private Objects findNode(final Graph graph, final NodeStorage storage)
{
Objects objects = null;

if(!storage.getId().isEmpty())
{
int nodeTypeId = SparkseeUtils.createOrFindNodeType(storage, graph);
objects = graph.select(nodeTypeId);
}

for (final Map.Entry<String, Object> entry : storage.getProperties().entrySet())
{
final int attributeId = graph.findAttribute(Type.GlobalType, entry.getKey());

if (objects == null || objects.isEmpty())
{
if(objects != null)
{
objects.close();
}
objects = graph.select(attributeId, Condition.Equal, SparkseeUtils.getValue(entry.getValue()));
}
else
{
objects = graph.select(attributeId, Condition.Equal, SparkseeUtils.getValue(entry.getValue()), objects);
}
}
return objects;
}

崩溃日志:

Closing sparkseejava.lang.RuntimeException: Session data still active when closing at com.sparsity.sparkseejavawrapJNI.delete_sparksee_gdb_Session(Native Method) at com.sparsity.sparksee.gdb.Session.delete(Session.java:32) at com.sparsity.sparksee.gdb.Session.close(Session.java:40) at main.java.com.bag.server.database.SparkseeDatabaseAccess.applyCreate(SparkseeDatabaseAccess.java:595) at main.java.com.bag.main.DatabaseLoader.loadGraph(DatabaseLoader.java:97) at main.java.com.bag.main.DatabaseLoader.main(DatabaseLoader.java:191)

我仍然看不到必须关闭的内容。我关闭了所有迭代器和对象。

最佳答案

Google 群组的原始答案: https://groups.google.com/forum/#!topic/sparksee/brcfhvFzdjg

我必须先关闭临时对象“objects”,然后再为其分配新的对象。

对象 tempObj = graph.select(attributeId, Condition.Equal, SparkseeUtils.getValue(entry.getValue()), objects);对象.close();对象= tempObj;

关于java - Sparksee 在 session 关闭时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43173456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com