我們使用Spring Data Neo4J開發Spring Boot REST應用程序。最近,我們升級到Spring Data Neo4j 4.2以及ogm 2.1.1並使用嵌入式驅動程序。neo4j-ogm中的Incosistent結果 - 與會話範圍相關?
在我們的應用程序中,我們提供了一些GET操作,其中我們從Neo4j中獲取的節點構建一些對象結構。當我們並行處理多個請求時,我們正面臨不穩定的結果,也就是說,我們的對象結構在每個請求上的大小不同。
我們不太確定這種不一致行爲的原因 - 但可能與OGM中的會話處理有關?我們知道Sessions不是線程安全的,但我們不知道如何在SD 4.2中處理這個問題。 4.2之前,我們改變了sesssion範圍定義會話bean時爲原型,但在SD配置改變4.2
配置之前4.2
@Bean
@Scope(value = "prototype", proxyMode = ScopedProxyMode.TARGET_CLASS)
public Session getSession() throws Exception {
return;
}
我們可以縮小我們問題的來源,我們是地方通過庫類從Neo4j的負載元件:
repository.findOne(id,-1);
如果我們將在同步塊這個電話時,不會出現不一致的情況。
synchronized (this) {
repository.findOne(id,-1);
}
我們可能會錯過使用SD 4.2/ogm的一些重要觀點,但在文檔和網絡上找不到任何有用的信息。 是否仍有可能/有必要更改SD 4.2中的會話範圍?
感謝您的信息 –
固定在'2.1.2-SNAPSHOT'。本週我們應該有一個2.1.2的新版本。 – digx1