2017-03-01 32 views
0

我們使用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中的會話範圍?

回答

1

這是OGM中的一個錯誤。參見:https://jira.spring.io/browse/DATAGRAPH-951

我們希望在下一個版本(OGM 2.1.2)中有一個解決方案。

+0

感謝您的信息 –

+1

固定在'2.1.2-SNAPSHOT'。本週我們應該有一個2.1.2的新版本。 – digx1