Hi,

When I configure a production image with command st handler as following:

pharo myImage st --save --quit configureMyImage.st

I notice at image start up, a Socket timeout error.

In the configureMyImage.st script, among other things, I open a
singleton Voyage repository. I added a 5s delay at the end of this
script, just wondering if image was shutdown before Voyage establishes
connection with the Mongo DB, but no.

Any incompatibility issues to be aware of between st command handler
(particularly the --save part) and Voyage repository?

Thanks,
Hilaire

-- 
Dr. Geo
http://drgeo.eu
THERE_BE_DRAGONS_HERE
ConnectionTimedOut: Cannot connect to 127.0.0.1:27017
22 Mars 2017 8:28:44.426873 pm

VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-EstebanLorenzano.20 uuid: cf2aeeee-897d-48fd-8251-6789dd21d958 Jun 14 2014
NBCogit NativeBoost-CogPlugin-EstebanLorenzano.20 uuid: cf2aeeee-897d-48fd-8251-6789dd21d958 Jun 14 2014
https://github.com/pharo-project/pharo-vm.git Commit: 0e8bbfbaeb03237fa6bb63ba834773fab18ca307 Date: 2014-06-14 12:20:21 -0300 By: Esteban Lorenzano <esteba...@gmail.com> Jenkins build #14833

Image: Pharo4.0 [Latest update: #40626]

[ ConnectionTimedOut signal: 'Cannot connect to ' , (NetNameResolver stringFromAddress: hostAddress) , ':' , port asString ] in Socket>>connectTo:port:waitForConnectionFor:
	Receiver: a Socket[invalidSocketHandle]
	Arguments and temporary variables: 
		hostAddress: 	#[127 0 0 1]
		port: 	27017
		timeout: 	45
	Receiver's instance variables: 
		semaphore: 	a Semaphore()
		socketHandle: 	#[22 158 214 88 0 0 0 0 168 244 243 8]
		readSemaphore: 	a Semaphore()
		writeSemaphore: 	a Semaphore()


Socket>>waitForConnectionFor:ifTimedOut:
	Receiver: a Socket[invalidSocketHandle]
	Arguments and temporary variables: 
		timeout: 	45
		timeoutBlock: 	[ ConnectionTimedOut signal: 'Cannot connect to ' , (NetNameResol...etc...
		startTime: 	265
		msecsDelta: 	45000
		msecsEllapsed: 	0
		status: 	-1
	Receiver's instance variables: 
		semaphore: 	a Semaphore()
		socketHandle: 	#[22 158 214 88 0 0 0 0 168 244 243 8]
		readSemaphore: 	a Semaphore()
		writeSemaphore: 	a Semaphore()


Socket>>connectTo:port:waitForConnectionFor:
	Receiver: a Socket[invalidSocketHandle]
	Arguments and temporary variables: 
		hostAddress: 	#[127 0 0 1]
		port: 	27017
		timeout: 	45
	Receiver's instance variables: 
		semaphore: 	a Semaphore()
		socketHandle: 	#[22 158 214 88 0 0 0 0 168 244 243 8]
		readSemaphore: 	a Semaphore()
		writeSemaphore: 	a Semaphore()


SocketStream class>>openConnectionToHost:port:timeout:
	Receiver: SocketStream
	Arguments and temporary variables: 
		hostIP: 	#[127 0 0 1]
		portNumber: 	27017
		timeout: 	45
		socket: 	a Socket[invalidSocketHandle]
	Receiver's instance variables: 
		superclass: 	Object
		methodDict: 	a MethodDictionary(#'<<'->SocketStream>>#'<<' #adjustInBuffer:->Soc...etc...
		format: 	154
		layout: 	a FixedLayout
		instanceVariables: 	#('recentlyRead' 'socket' 'inBuffer' 'outBuffer' 'inNextToWr...etc...
		organization: 	a ClassOrganization
		subclasses: 	nil
		name: 	#SocketStream
		classPool: 	a Dictionary()
		sharedPools: 	an OrderedCollection()
		environment: 	a SystemDictionary(lots of globals)
		category: 	#'Network-Kernel'
		traitComposition: 	{}
		localSelectors: 	nil


SocketStream class>>openConnectionToHost:port:
	Receiver: SocketStream
	Arguments and temporary variables: 
		hostIP: 	#[127 0 0 1]
		portNumber: 	27017
	Receiver's instance variables: 
		superclass: 	Object
		methodDict: 	a MethodDictionary(#'<<'->SocketStream>>#'<<' #adjustInBuffer:->Soc...etc...
		format: 	154
		layout: 	a FixedLayout
		instanceVariables: 	#('recentlyRead' 'socket' 'inBuffer' 'outBuffer' 'inNextToWr...etc...
		organization: 	a ClassOrganization
		subclasses: 	nil
		name: 	#SocketStream
		classPool: 	a Dictionary()
		sharedPools: 	an OrderedCollection()
		environment: 	a SystemDictionary(lots of globals)
		category: 	#'Network-Kernel'
		traitComposition: 	{}
		localSelectors: 	nil


SocketStream class>>openConnectionToHostNamed:port:
	Receiver: SocketStream
	Arguments and temporary variables: 
		hostName: 	'localhost'
		portNumber: 	27017
		hostIP: 	#[127 0 0 1]
	Receiver's instance variables: 
		superclass: 	Object
		methodDict: 	a MethodDictionary(#'<<'->SocketStream>>#'<<' #adjustInBuffer:->Soc...etc...
		format: 	154
		layout: 	a FixedLayout
		instanceVariables: 	#('recentlyRead' 'socket' 'inBuffer' 'outBuffer' 'inNextToWr...etc...
		organization: 	a ClassOrganization
		subclasses: 	nil
		name: 	#SocketStream
		classPool: 	a Dictionary()
		sharedPools: 	an OrderedCollection()
		environment: 	a SystemDictionary(lots of globals)
		category: 	#'Network-Kernel'
		traitComposition: 	{}
		localSelectors: 	nil


GratuitousIncompatibilities class>>socketStreamHost:port:
	Receiver: GratuitousIncompatibilities
	Arguments and temporary variables: 
		aString: 	'localhost'
		anInteger: 	27017
		result: 	nil
	Receiver's instance variables: 
		superclass: 	Object
		methodDict: 	a MethodDictionary()
		format: 	2
		layout: 	a FixedLayout
		instanceVariables: 	#()
		organization: 	a ClassOrganization
		subclasses: 	nil
		name: 	#GratuitousIncompatibilities
		classPool: 	a Dictionary(#UTF8Codec->nil #UTF8Converter->nil )
		sharedPools: 	an OrderedCollection()
		environment: 	a SystemDictionary(lots of globals)
		category: 	#'Mongo-Squeak'
		traitComposition: 	{}
		localSelectors: 	nil


Mongo>>open
	Receiver: Mongo (localhost:27017)
	Arguments and temporary variables: 

	Receiver's instance variables: 
		host: 	'localhost'
		port: 	27017
		stream: 	nil
		requestID: 	0
		authCache: 	nil


VOMongoSessionPool(VOSessionPool)>>ensureConnected:
	Receiver: a VOMongoSessionPool
	Arguments and temporary variables: 
		aSession: 	Mongo (localhost:27017)
	Receiver's instance variables: 
		sessions: 	SharedQueue with 0 items
		size: 	10
		mutex: 	a Semaphore()
		process: 	a Process in nil
		host: 	'localhost'
		port: 	27017
		database: 	'DBRefinancement'
		username: 	nil
		password: 	nil


[ 
self isFull
	ifFalse: [ self returnToPool: (self ensureConnected: self newSession) ] ] in [ 
self size
	timesRepeat: [ 
		self isFull
			ifFalse: [ self returnToPool: (self ensureConnected: self newSession) ] ] ] in [ 
self isPopulating
	ifFalse: [ 
		process := [ 
		self size
			timesRepeat: [ 
				self isFull
					ifFalse: [ self returnToPool: (self ensureConnected: self newSession) ] ] ]
			forkAt: Processor lowestPriority
			named: 'Voyage mongo pool: populating' ] ] in VOMongoSessionPool(VOSessionPool)>>populate
	Receiver: a VOMongoSessionPool
	Arguments and temporary variables: 

	Receiver's instance variables: 
		sessions: 	SharedQueue with 0 items
		size: 	10
		mutex: 	a Semaphore()
		process: 	a Process in nil
		host: 	'localhost'
		port: 	27017
		database: 	'DBRefinancement'
		username: 	nil
		password: 	nil


SmallInteger(Integer)>>timesRepeat:
	Receiver: 10
	Arguments and temporary variables: 
		aBlock: 	[ 
self isFull
	ifFalse: [ self returnToPool: (self ensureConnected: se...etc...
		count: 	1
	Receiver's instance variables: 
10

[ 
self size
	timesRepeat: [ 
		self isFull
			ifFalse: [ self returnToPool: (self ensureConnected: self newSession) ] ] ] in [ 
self isPopulating
	ifFalse: [ 
		process := [ 
		self size
			timesRepeat: [ 
				self isFull
					ifFalse: [ self returnToPool: (self ensureConnected: self newSession) ] ] ]
			forkAt: Processor lowestPriority
			named: 'Voyage mongo pool: populating' ] ] in VOMongoSessionPool(VOSessionPool)>>populate
	Receiver: a VOMongoSessionPool
	Arguments and temporary variables: 

	Receiver's instance variables: 
		sessions: 	SharedQueue with 0 items
		size: 	10
		mutex: 	a Semaphore()
		process: 	a Process in nil
		host: 	'localhost'
		port: 	27017
		database: 	'DBRefinancement'
		username: 	nil
		password: 	nil


[ 
self value.
Processor terminateActive ] in BlockClosure>>newProcess
	Receiver: [ 
self size
	timesRepeat: [ 
		self isFull
			ifFalse: [ self returnToPool: (self ensureC...etc...
	Arguments and temporary variables: 

	Receiver's instance variables: 
		outerContext: 	[ 
self isPopulating
	ifFalse: [ 
		process := [ 
		self size
			...etc...
		startpc: 	81
		numArgs: 	0



--- The full stack ---
[ ConnectionTimedOut signal: 'Cannot connect to ' , (NetNameResolver stringFromAddress: hostAddress) , ':' , port asString ] in Socket>>connectTo:port:waitForConnectionFor:
Socket>>waitForConnectionFor:ifTimedOut:
Socket>>connectTo:port:waitForConnectionFor:
SocketStream class>>openConnectionToHost:port:timeout:
SocketStream class>>openConnectionToHost:port:
SocketStream class>>openConnectionToHostNamed:port:
GratuitousIncompatibilities class>>socketStreamHost:port:
Mongo>>open
VOMongoSessionPool(VOSessionPool)>>ensureConnected:
[ 
self isFull
	ifFalse: [ self returnToPool: (self ensureConnected: self newSession) ] ] in [ 
self size
	timesRepeat: [ 
		self isFull
			ifFalse: [ self returnToPool: (self ensureConnected: self newSession) ] ] ] in [ 
self isPopulating
	ifFalse: [ 
		process := [ 
		self size
			timesRepeat: [ 
				self isFull
					ifFalse: [ self returnToPool: (self ensureConnected: self newSession) ] ] ]
			forkAt: Processor lowestPriority
			named: 'Voyage mongo pool: populating' ] ] in VOMongoSessionPool(VOSessionPool)>>populate
SmallInteger(Integer)>>timesRepeat:
[ 
self size
	timesRepeat: [ 
		self isFull
			ifFalse: [ self returnToPool: (self ensureConnected: self newSession) ] ] ] in [ 
self isPopulating
	ifFalse: [ 
		process := [ 
		self size
			timesRepeat: [ 
				self isFull
					ifFalse: [ self returnToPool: (self ensureConnected: self newSession) ] ] ]
			forkAt: Processor lowestPriority
			named: 'Voyage mongo pool: populating' ] ] in VOMongoSessionPool(VOSessionPool)>>populate
[ 
self value.
Processor terminateActive ] in BlockClosure>>newProcess
-------------------------------------------------------------------------------

Reply via email to