Mongodb: com.mongodb.MongoSocketReadException: Prématurément atteint la fin du flux " avec morphia
J'ai une simple structure de données (le Transaction
référencé ci-dessous) pour être inséré dans mongodb:
{"amount":111,"debitAcc":"588188286231743e7d5c923d","type":"CHARGE"}
Un j'ai eu l'erreur suivante de la pile:
com.mongodb.MongoSocketReadException: Prematurely reached end of stream
at com.mongodb.connection.SocketStream.read(SocketStream.java:88)
at com.mongodb.connection.InternalStreamConnection.receiveResponseBuffers(InternalStreamConnection.java:494)
at com.mongodb.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:224)
at com.mongodb.connection.UsageTrackingInternalConnection.receiveMessage(UsageTrackingInternalConnection.java:96)
at com.mongodb.connection.DefaultConnectionPool$PooledConnection.receiveMessage(DefaultConnectionPool.java:440)
at com.mongodb.connection.WriteCommandProtocol.receiveMessage(WriteCommandProtocol.java:262)
at com.mongodb.connection.WriteCommandProtocol.execute(WriteCommandProtocol.java:104)
at com.mongodb.connection.InsertCommandProtocol.execute(InsertCommandProtocol.java:67)
at com.mongodb.connection.InsertCommandProtocol.execute(InsertCommandProtocol.java:37)
at com.mongodb.connection.DefaultServer$DefaultServerProtocolExecutor.execute(DefaultServer.java:168)
at com.mongodb.connection.DefaultServerConnection.executeProtocol(DefaultServerConnection.java:289)
at com.mongodb.connection.DefaultServerConnection.insertCommand(DefaultServerConnection.java:118)
at com.mongodb.operation.InsertOperation.executeCommandProtocol(InsertOperation.java:76)
at com.mongodb.operation.BaseWriteOperation$1.call(BaseWriteOperation.java:139)
at com.mongodb.operation.BaseWriteOperation$1.call(BaseWriteOperation.java:133)
at com.mongodb.operation.OperationHelper.withConnectionSource(OperationHelper.java:422)
at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:413)
at com.mongodb.operation.BaseWriteOperation.execute(BaseWriteOperation.java:133)
at com.mongodb.operation.BaseWriteOperation.execute(BaseWriteOperation.java:60)
at com.mongodb.Mongo.execute(Mongo.java:845)
at com.mongodb.Mongo$2.execute(Mongo.java:828)
at com.mongodb.DBCollection.executeWriteOperation(DBCollection.java:342)
at com.mongodb.DBCollection.insert(DBCollection.java:337)
at com.mongodb.DBCollection.insert(DBCollection.java:328)
at org.mongodb.morphia.DatastoreImpl.saveDocument(DatastoreImpl.java:1297)
at org.mongodb.morphia.DatastoreImpl.tryVersionedUpdate(DatastoreImpl.java:1340)
at org.mongodb.morphia.DatastoreImpl.save(DatastoreImpl.java:1286)
at org.mongodb.morphia.DatastoreImpl.save(DatastoreImpl.java:775)
at org.mongodb.morphia.DatastoreImpl.save(DatastoreImpl.java:758)
Mon mongodb version est 3.4.2
.
Intereting est que je n'ai pas le problème sur mon local environnement de dev (mint linux 18.1). Mais il ne peut pas fonctionner sur mon SIT de l'environnement, qui est une ubuntu 16.04
Une idée?
Mises à jour avec le code à insérer le document
Où transactionDao.save(...)
mise en œuvre pourrait être trouvé à:
mise à jour 2
Le système fonctionne avec d'autres écritures (même avec beaucoup plus de dossiers)
Où est le code que vous utilisez pour l'insertion de ce document?
Faire toutes autres opérations de travailler vraiment dans votre SIT de l'environnement?
Oui d'autres opérations fonctionne comme d'habitude. C'est pourquoi ça me dérange beaucoup
Faire toutes autres opérations de travailler vraiment dans votre SIT de l'environnement?
Oui d'autres opérations fonctionne comme d'habitude. C'est pourquoi ça me dérange beaucoup
OriginalL'auteur Gelin Luo | 2017-02-10
Vous devez vous connecter pour publier un commentaire.
La plupart du temps, c'est à la suite de délais d'attente avec de longues lectures\écrit.
essayer d'augmenter les délais d'attente ou de les supprimer complètement:
Veuillez ajouter un peu plus d'info: Toutes les autres écritures de travail? Pourquoi l'aide de la transaction? Pourquoi vous mettez la même opération deux fois avec de Nouvelles?
Mis à jour.
Transaction
est juste un modèle de données, pas de Transaction SQL. Bonne place sur deux nouvelle Transaction. Je dois résoudre ce problème. En fait, la première nouvelle Transaction est utilisée pour imprimer les informations de débogage, il n'était pas là à l'origine. Mais il n'a pas d'impact sur le résultatVous exécutez la Requête avant la mise à jour? cela pourrait ralentir la mise à jour.
Pas de requête avant de mettre à jour
OriginalL'auteur It-Z
Je n'ai pas la cause, mais à la fin je obtenir le problème résolu par la modification d'un type de champ à partir de
BigDecimal
àdouble
.Le problème est trouvée dans nos SIT exceptionel et un développeur de l'environnement windows qui a un mongodb cluser de l'installation.
Non, pas vraiment. Mais en changeant le type de champ fonctionne pour moi. Je soupçonne qu'il y a un problème dans mongodb pilote ou Morphia
Et oui, ce trié ma question. Dans mon cas, c'était un champ de type Decimal128 qui devait changer.
OriginalL'auteur Gelin Luo
La raison la plus probable est la version de compatibilité est trop faible.
Essayer db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
https://docs.mongodb.com/manual/reference/command/setFeatureCompatibilityVersion/
BigDecimal
quand CompatibilityVersion inférieur de 3,4OriginalL'auteur ogborstad