2016-08-28 4 views
0

spring-data-neo4j 4.2.0.M1とneo4j-ogm 2.0.4をneo4j 3.1.0-M04 。RelationshipEntity(巨大な生成されたCypherクエリーを含む)を保存すると、 "EntityNotFoundException:ID付きのRELATIONSHIPをロードできません"

変更されたRelationshipEntitiesのコレクションを保存しようとする場合を除いて、アプリケーションは一般的に機能しています。 コードはsthです。このように:

List<Relationship> updatedRelationships = new ArrayList<>(); 
for(Relationship relationship : modifiedRelationships) 
{ 
    relationship = relationshipRepository.load(relationship); 
    relationship.setValue("value"); 
    updatedRelationships.add(relationship); 
} 
relationshipRepository.save(relationships); 

RelationshipEntityは@RelationshipEntityでアノテートされており、@StartNodeと@EndNodeに加えて、いくつかのプロパティを持っています。しかし、上記のプロパティだけが変更されます。 RelationshipEntityはループ内でloadです。これは、これを実行する際に以前に失われた情報(つまり、他のプロパティの値)に気付いたためです。 上記のコードは、多くのRelationshipEntitiesに対して連続して実行されることに注意してください。各関係(たぶん)は1回だけ発生しますが、開始ノードと終了ノードはおそらく数回発生します。私の知る限り、関係は削除されません。

私が得る例外は次のとおりです。

Caused by: org.neo4j.kernel.api.exceptions.EntityNotFoundException: Unable to load RELATIONSHIP with id 20683203. 
at org.neo4j.kernel.impl.api.store.DiskLayer.relationshipVisit(DiskLayer.java:432) 
at org.neo4j.kernel.impl.api.store.CacheLayer.relationshipVisit(CacheLayer.java:326) 
at org.neo4j.kernel.impl.api.StateHandlingStatementOperations.relationshipVisit(StateHandlingStatementOperations.java:1409) 
at org.neo4j.kernel.impl.api.ConstraintEnforcingEntityOperations.relationshipVisit(ConstraintEnforcingEntityOperations.java:416) 
at org.neo4j.kernel.impl.api.OperationsFacade.relationshipVisit(OperationsFacade.java:493) 
at org.neo4j.kernel.impl.factory.GraphDatabaseFacade.getRelationshipById(GraphDatabaseFacade.java:300) 
... 104 common frames omitted 

(おそらくクエリを「保存」している)の前に実行されたクエリが巨大であると(200kの文字のようなSTH。)ここでは文字の制限を超えています。実際に約30個のエンティティしか保存されていないため、(ビジネスロジックの視点から)必要以上の関係がどこにあるかが問合せによって分かります。私は、結果のクエリ(またはエンティティごとに更新が行われた場合のクエリ)はかなり簡単だと考えています。

2016-08-28 20:16:33,007 I [pool-4-thread-1    ] (EmbeddedRequest.java:155)  Request: START r=rel({relIds}) FOREACH (row in filter(row in {rows} where row.relId = id(r)) | SET r += row.props) RETURN ID(r) as ref, ID(r) as id, {type} as type with params {relIds=[13744338, 19099951, 12570789, 12570785, 13744377, 13648126, 12570765, 20627727, 13744356, 20627724, 12570760, 19263773, 19257628, 20113678, 19099932, 19259756, 18796874, 13783174, 19097972, 19083644, 19099970, 19097921, 19077446, 19263810, 13744312, 20568405, 20904270, 19097937, 12570827, 20627779, 20648258, 12570816, 20683195, 19259812, 20683194, 20683193, 20683192, 19083690, 20683186, 20683191, 19259819, 18819471, 20683178, 20683177, 12570669, 20683176, 19276210, 19933607, 20683171, 18844038, 19100089, 20683174, 20683173, 20683163, 20683162, 20683161, 13744242, 19257729, 12570649, 20683165, 20683164, 19087754, 21703141, 12570641, 8341711, 19259796, 8704051, 19915155, 19261851, 13783062, 13783063, 19091955, 18182597, 19276276, 19276275, 20623852, 20607468, 20623853, 19100155, 19233277, 13783048, 19261946, 12570719, 21789101, 12570718, 19075526, 19259842, 19257807, 12570707, 13715516, 19098061, 19261908, 20683208, 20683215, 19100118, 20683212, 20683203, 19276254, 20683201, 20683207, 19091934, 20683206, 19261915, 19097639, 19101736, 19101749, 18821129, 19097659, 19124284, 13662709, 13744628, 19052549, 19089427, 13744612, 19265563, 19251300, 19089509, 19251298, 20631665, 19251305, 19265642, 13744513, 19261558, 19261511, 19265606, 19081291, 18903113, 18903114, 19251273, 8341775, 12597685, 13744548, 19081308, 18725021, 18725020, 19273892, 19099808, 19089572, 19097772, 13744449, 13683011, 18178177, 19273905, 19093694, 18178231, 19124358, 20633756, 13744502, 19081356, 18651311, 19093661, 20562171, 19263725, 20625639, 19099901, 20631774, 20676819, 18651383, 20676822, 20676821, 20676820, 19097811, 19099862, 13744428, 20631751, 18178280, 18668312, 19100453, 19088171, 20708148, 19143487, 19088184, 19094334, 18668349, 13744883, 19145485, 20607750, 19094301, 19086108, 13744792, 20611958, 19143528, 13662849, 13744829, 12571346, 20611918, 20611919, 18811753, 19100506, 13744813, 19084195, 13662806, 20708275, 19098546, 20612001, 13744752, 20708253, 12595823, 20611976, 19147673, 19258343, 19274725, 19084262, 19082212, 19096548, 20591606, 19086317, 13662720, 8348332, 19274738, 8348329, 19096571, 21703569, 19440630, 13744654, 21824427, 13744701, 19258320, 20612032, 19086296, 19080158, 19282466, 19145249, 19261996, 20607539, 12596170, 19282472, 18776588, 19100208, 12596183, 18182658, 19233341, 19278395, 19096126, 19098115, 20640284, 18844217, 19255810, 19259919, 19257864, 20623892, 19091980, 19933697, 19282450, 19100180, 19261981, 12596219, 12596113, 19255924, 20707949, 12596118, 19098228, 18704970, 12596122, 19278458, 19096190, 19278456, 19253826, 19278412, 13745087, 19100241, 13745066, 18704995, 19278500, 13744981, 5954519, 19094199, 19143356, 13744970, 12598116, 18840242, 13745006, 18676445, 18008789, 19096298, 18676426, 20607724, 13744906, 13755199, 19094227, 12596419, 19098918, 19256621, 19090736, 21075287, 19100929, 21851496, 20876568, 13681912, 12596463, 12596465, 19090704, 10951825, 12596471, 13681897, 13753581, 19094814, 12596352, 21703948, 21695756, 18699605, 19256693, 18818378, 12596376, 19090755, 19256647, 13681844, 19082583, 18836839, 18699621, 12596409, 20618681, 21544395, 19916202, 12596299, 12596310, 19436940, 19099014, 19094918, 19916170, 13681782, 12596335, 20680073, 13681762, 13681763, 19099028, 19094938, 21081473, 13681682, 20680177, 12596242, 19099126, 19500540, 21081496, 10492993, 19099087, 21081517, 19099094, 21704112, 19098665, 18680849, 12596685, 12596689, 19274804, 20648995, 19137597, 21048411, 19088387, 19262470, 20657183, 19086357, 19258397, 18680869, 12596731, 19088413, 19272807, 19274848, 19272811, 12596622, 18811984, 15797667, 19096694, 19082357, 19262579, 19274875, 19137604, 12596642, 19274830, 19098696, 13682107, 12596651, 19096655, 20632650, 19088474, 19274845, 19262555, 19100834, 13682007, 19098794, 19100851, 12596565, 20556972, 19254450, 20597926, 12598622, 20597925, 20649114, 19100800, 13682036, 19100806, 12596582, 18703539, 20638856, 20598010, 18703582, 19094763, 19100905, 19096808, 20634857, 20597991, 5877179, 5877178, 20597977, 5877181, 19098822, 12596527, 12596532, 19199781, 19265313, 19261228, 20625200, 19257134, 20625201, 18714376, 19085108, 19253054, 19253048, 19265339, 20637459, 20637456, 19085074, 21081974, 8316482, 20598534, 18714402, 19107685, 19253090, 20615029, 19097462, 19263346, 20621152, 19263352, 19259207, 13729470, 19085140, 20688830, 19251116, 19259304, 13678173, 20615087, 12596830, 19097474, 21082087, 12596840, 19263368, 19251093, 8701488, 19267475, 8349384, 12572165, 8349360, 12596751, 19077119, 12596765, 20625380, 19077057, 19089350, 21825447, 21702567, 13682208, 12596785, 8316559, 18178020, 19253207, 20688847, 12596788, 19267536, 20688838, 12570558, 19232295, 12570550, 13783001, 20643352, 20694547, 19095051, 20643338, 19232272, 12570505, 20641280, 20694529, 20641284, 19099164, 20821624, 20821626, 20631165, 20821619, 12570606, 19439229, 12570601, 18820674, 19232327, 12570588, 20694621, 20641362, 20119134, 20631115, 20680264, 20618831, 19093080, 18824862, 19256994, 7325670, 20821668, 19257017, 13782863, 16494427, 20620952, 19256967, 20637331, 18030271, 8267731, 19256977, 20670095, 19099360, 20637433, 19261170, 19265276, 20907749, 18822910, 20621021, 19099339, 19252938, 19936961, 19099345, 19109599, 19257048], rows=[omitted] 

このIDを持つ関係を直接ロードしようとしましたが、存在しません。同じコードが他のRelationshipEntitiesではうまく実行されますが、このコードまたはいくつかの他のRelationshipEntityのいずれかで繰り返し失敗します。 これを引き起こす可能性のあることや、これをよりうまくデバッグする方法について考えてください。

私は何とか次の手順でこれを解決し 考える
+0

このアプリケーション以外の関係を削除することはできますか? – cybersam

+0

私はそれを疑う。アプリケーションは組み込みのneo4jデータベースを実行し、アプリケーション内の他のプロセスはその時点でアクティブではありません。 – geld0r

答えて

0

:シーケンシャルな修正作業を作る修正NodeEntity

  • を保存してRelationshipEntityを保存置き換え

    • (以前これが並行して起こることができる)
    • トランザクションの変更操作をカプセル化します
    • 同じトランザクションで同じエンティティが2回保存されたバグを修正しました。 eantime)
    • トランザクションの開始時に再び実体をフェッチ最新の状態が利用可能とするために

    それが最終的に働いていたまで、私はこのトピックについての暗闇の中でpretttyくらいだったので、私は、もしわかりませんすべてのステップが実際にこれを解決するのに役立ちました。それは実際にはサブセットでしかないかもしれません。 私は今でも見ることができますが、巨大な更新クエリは(まだかなり大きいですが)小さくなっていますが、実際にはほとんどが「ヌル」プロパティではなく「実際の」アップデートを含んでいるようです。以前はそれが本当にアップデートを含んでおらず、代わりに "null"でプロパティをオーバーライドしていたと仮定します。これが現在機能しているという事実は、エンティティが変更を開始する前に更新されており、他の変更操作は並行して実行できないという事実に関連していると考えられます。

  • 0

    私は同じ問題を抱えていました。私にとっては、単純にneo4j-ogm-embedded-driver バージョンだったので、私のpomに含めなければなりませんでした。私が定義したものは、spring-data-neo4jで定義されているものを上書きしました。 あなただけrelationshipEntityを保存する場合

    0

    、あなただけの次のスニペットを使用してできます

    List<Relationship> updatedRelationships = new ArrayList<>(); 
    for(Relationship relationship : modifiedRelationships) 
    { 
        relationship = relationshipRepository.load(relationship); 
        relationship.setValue("value"); 
        updatedRelationships.add(relationship); 
    } 
    relationshipRepository.save(updatedRelationships,0); 
    

    それはrelationshipEntityに関連するプロパティを保存し、その間に任意の関連企業を無視します。

    関連する問題