Search code examples
mongodbsmalltalkpharo

primitive #primSocketSendDone: in Socket failed


I am using Mongotalk and Pharo to run a bunch of analyses.

For every analysis I run a new Pharo instance with the same image and it all works fine until, at a random point, I get a PrimitiveFailed as follows:

^[[31mPrimitiveFailed: primitive #primSocketSendDone: in Socket failed
^[[0mSocket(Object)>>primitiveFailed:
Socket(Object)>>primitiveFailed
Socket>>primSocketSendDone:
Socket>>waitForSendDoneFor:
Socket>>sendSomeData:startIndex:count:for:
Socket>>sendSomeData:startIndex:count:
Socket>>sendData:count:
SocketStream>>flush in Block: [ socket sendData: outBuffer count: outNextToWrite...etc...
BlockClosure>>on:do:
SocketStream>>flush
LittleEndianStream>>flush
InsertOperation(MongoOperation)>>flush
InsertOperation(MongoOperation)>>write
Mongo>>insert:collection:
MongoDatabase>>insert:collection:
MongoCollection>>insert:
MongoCollection>>add:
MyClass>>methodThatCallsAddOnMongoCollection

and after that all my analyses fail even though I run a new Pharo process for each one.

Anyone got any ideas what is wrong here and why?

cheers,


Solution

  • Solved it by modifying my client code to store more data less frequently (i.e. cache more in memory) and the problem went away, now i can even run 16 Pharo instances in parallel.