With r40, on the server side, I have this error, which I don't understand (error log enclosed)
Hilaire
I have to add this error came when I move from local use of Magma to remote use. The error does not appear when Magma is used in local mode. And it does not occurs with all persisted object. I suspect this problem is here since several months as I was only using Magma in local mode for developemnt purpose. I am really stuck, the error message in the server is not helpful, only class-definition not found
Hilaire
Hilaire Fernandes a écrit :
With r40, on the server side, I have this error, which I don't understand (error log enclosed)
Hilaire
MessageNotUnderstood: MaMalformedRequestError>>repositoryController: 11 December 2007 6:11:32 pm
VM: unix - a SmalltalkImage Image: Squeak3.9 [latest update: #7067]
SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /home/hilaire/iStoa Trusted Dir /home/hilaire/iStoa/secure Untrusted Dir /home/hilaire/iStoa/My Squeak
MaMalformedRequestError(Object)>>doesNotUnderstand: #repositoryController: Receiver: MaMalformedRequestError: class-definition not found Arguments and temporary variables: t1: repositoryController: a MagmaRepositoryController Receiver's instance variables: messageText: 'class-definition not found' tag: nil signalContext: nil handlerContext: nil outerContext: nil
MagmaRepositoryController>>processRequest: Receiver: a MagmaRepositoryController Arguments and temporary variables: t1: MaMalformedRequestError: class-definition not found t2: nil Receiver's instance variables: repository: a MaObjectRepository session: a MagmaSession serverSerializer: a MaObjectSerializer requestInterruptGuard: a Monitor localLocation: /home/hilaire/iStoa/Magma preferences: a MagmaServerPreferences
[] in MagmaServerConsole>>processOn: {[:t2 | controller processRequest: t2]} Arguments and temporary variables: t1: 4040 t2: MaMalformedRequestError: class-definition not found
[] in MaTcpRequestServer(MaRequestServer)>>processRequest: {[processor value: t1]} Arguments and temporary variables: t1: MaMalformedRequestError: class-definition not found t2: nil t3: nil
--- The full stack --- MaMalformedRequestError(Object)>>doesNotUnderstand: #repositoryController: MagmaRepositoryController>>processRequest: [] in MagmaServerConsole>>processOn: {[:t2 | controller processRequest: t2]} [] in MaTcpRequestServer(MaRequestServer)>>processRequest: {[processor value: t1]}
BlockContext>>on:do: MaTcpRequestServer(MaRequestServer)>>processRequest: MaTcpRequestServer>>processRequestByteArray: [] in MaServerSocket>>initialize {[:t1 | server processRequestByteArray: t1]} MaServerSocket>>processRequest: [] in MaServerSocket>>startProcessingRequests {[[running or: [requestQueue notEmpty]] whileTrue: [self processRequest: ...]} [] in BlockContext>>newProcess {[self value. Processor terminateActive]}
Magma mailing list Magma@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/magma
Hi Hilaire, a the MalformedRequest error is telling you the server received a request from your client that it could not properly materialize. Specifically, it looks like your Magma client has attempted to extend the Magma #protocol ("class id not found"). Are you running a modified Magma client?
It does look like the error-handling code incorrectly passes the MalformedRequestError Exception AS the request which is, of course, a bug. I will fix that, so that it kick the error back to your client as it should.
But I know you are interested in the cause of the error itself. When you get this error, you should break into your client and look in teh debugger at the request it passed to the server. Look at ALL the arguments and find which object whose class is not included in this Array:
MagmaRepositoryController basicNew protocol
THAT is the one that is causing the problem.
- Chris
On Dec 11, 2007 4:41 PM, Hilaire Fernandes hilaire@ofset.org wrote:
I have to add this error came when I move from local use of Magma to remote use. The error does not appear when Magma is used in local mode. And it does not occurs with all persisted object. I suspect this problem is here since several months as I was only using Magma in local mode for developemnt purpose. I am really stuck, the error message in the server is not helpful, only class-definition not found
Hilaire
Hilaire Fernandes a écrit :
With r40, on the server side, I have this error, which I don't understand (error log enclosed)
Hilaire
MessageNotUnderstood: MaMalformedRequestError>>repositoryController: 11 December 2007 6:11:32 pm
VM: unix - a SmalltalkImage Image: Squeak3.9 [latest update: #7067]
SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /home/hilaire/iStoa Trusted Dir /home/hilaire/iStoa/secure Untrusted Dir /home/hilaire/iStoa/My Squeak
MaMalformedRequestError(Object)>>doesNotUnderstand: #repositoryController: Receiver: MaMalformedRequestError: class-definition not found Arguments and temporary variables: t1: repositoryController: a MagmaRepositoryController Receiver's instance variables: messageText: 'class-definition not found' tag: nil signalContext: nil handlerContext: nil outerContext: nil
MagmaRepositoryController>>processRequest: Receiver: a MagmaRepositoryController Arguments and temporary variables: t1: MaMalformedRequestError: class-definition not found t2: nil Receiver's instance variables: repository: a MaObjectRepository session: a MagmaSession serverSerializer: a MaObjectSerializer requestInterruptGuard: a Monitor localLocation: /home/hilaire/iStoa/Magma preferences: a MagmaServerPreferences
[] in MagmaServerConsole>>processOn: {[:t2 | controller processRequest: t2]} Arguments and temporary variables: t1: 4040 t2: MaMalformedRequestError: class-definition not found
[] in MaTcpRequestServer(MaRequestServer)>>processRequest: {[processor value: t1]} Arguments and temporary variables: t1: MaMalformedRequestError: class-definition not found t2: nil t3: nil
--- The full stack --- MaMalformedRequestError(Object)>>doesNotUnderstand: #repositoryController: MagmaRepositoryController>>processRequest: [] in MagmaServerConsole>>processOn: {[:t2 | controller processRequest: t2]} [] in MaTcpRequestServer(MaRequestServer)>>processRequest: {[processor value: t1]}
BlockContext>>on:do: MaTcpRequestServer(MaRequestServer)>>processRequest: MaTcpRequestServer>>processRequestByteArray: [] in MaServerSocket>>initialize {[:t1 | server processRequestByteArray: t1]} MaServerSocket>>processRequest: [] in MaServerSocket>>startProcessingRequests {[[running or: [requestQueue notEmpty]] whileTrue: [self processRequest: ...]} [] in BlockContext>>newProcess {[self value. Processor terminateActive]}
Magma mailing list Magma@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/magma
Magma mailing list Magma@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/magma
But I know you are interested in the cause of the error itself. When you get this error, you should break into your client and look in teh debugger at the request it passed to the server. Look at ALL the arguments and find which object whose class is not included in this Array:
MagmaRepositoryController basicNew protocol
thats the one... try changing the appropriate lines in #protocol to
"extra objects for some requests." MaBasicReadStrategy withAllSubclasses asArray, { MaCommitPackage. },
Keith
Thanks for your advices, it is helpful.
In this place of the application I am not using read strategy. In other place of the application where I am suing read strategy I don't have the problem, so may be it is a problem underneath.
In the Magma client I only have the modification to StrikeFont>>maAsStorageObject so TextMorph are persisted correctly. I apply this change both to client and server :
StrikeFont>>maAsStorageObject ^ DiskProxy global: #StrikeFont selector: #familyName:pointSize:emphasized: args: { self familyName. self pointSize. self emphasis }
Chris, I went until the MaTcp...>>submit: method, but I don't really understand where to look.
From the MaCommitPackage, the MagmaCollectionChanges looks like:
collectionOid: 4112481 changes: a Dictionary(#added->an IdentityDictionary(66543->an OrderedCollection(#(250776336) #(0) #(10625597) an IFILevelCollection() #(1)) ) #removed->an IdentityDictionary() ) isNewCollection: false collection: a MagmaCollection
The problem happens when I add an object to a MagmaCollection
IFIDbSession commit: [pedagogicalMoments add: moment]
In this commit, TextMorph persitency occurs. I repeat this code is working when Magma is in local mode.
In the client, MagmaRepositoryController basicNew protocol returns, where only IFICompetencyCollection is new (the server has the same protocol size):
{LargePositiveInteger . MaSerializedGraphBuffer . MaByteObjectBuffer . MaVariableWordBuffer . MaVariableObjectBuffer . MaFixedObjectBuffer . MaStorageObjectBuffer . MaVariableBuffer . MaLargeCollectionSegmentRequest . MaLoadProgressRequest . MaRefreshSegmentRequest . MaDownloadCodeRequest . MaLoadFromReaderRequest . MaReaderTrunkRequest . MaAbortTransactionRequest . MaRepositoryConnectionRequest . MaWriteRequest . MagmaPathNameRequest . MaCloseRepositoryRequest . MaLargeCollectionSizeRequest . MaAbstractReadRequest . MaTransactionRequest . MagmaIdRequest . MaAnchorRequest . MaReadRequest . MaKeyIntervalInfoRequest . MaSegmentByIndexRequest . MaRepositoryDisconnectRequest . MaCommitPackage . MaBasicReadStrategy . MaReadStrategy . MagmaCollectionSegment . MaRefreshViewResult . MaReadResult . MagmaLargeCollectionSegment . MaCommitResult . MagmaCollectionReaderSegment . MaFailedCommitResult . MagmaId . UUID . MaFailedCommitResult . MagmaClientConnection . MagmaCommitConflict . Fraction . MaClause . MaExpression . MaQueryTrunkClause . MaQueryTrunk . MagmaSet . IFICompetencyCollection . MagmaCollection . IdentityDictionary . MagmaIndexDescription . MagmaArrayChanges . MagmaCollectionChanges . Association . MaChangedKeySpecification . MaEnvironmentError . MaObjectSerializationUserError . MaUnreadableRecoveryRecord . MagmaEquivalentObjectNotInCollection . MagmaSoftwareError . MaNetworkError . MagmaSessionLost . MagmaEnvironmentError . MaObjectSerializationSecurityViolation . MaHashIndexUserError . MagmaUserError . MagmaInvalidIndexObject . MagmaCommitError . MaClientServerUserError . MagmaCorruptionError . MaSecurityViolation . MagmaGarbageCollectedObject . MagmaDuplicateObjectInCollection . MaSoftwareError . MaCorruptionError . MagmaInvalidOid . MaUserError . MaMalformedRequestError . MaObjectSerializationSoftwareError . MaSpecialCollectionsSoftwareError}
Le mardi 11 décembre 2007 à 23:06 -0500, Chris Muller a écrit :
Hi Hilaire, a the MalformedRequest error is telling you the server received a request from your client that it could not properly materialize. Specifically, it looks like your Magma client has attempted to extend the Magma #protocol ("class id not found"). Are you running a modified Magma client?
It does look like the error-handling code incorrectly passes the MalformedRequestError Exception AS the request which is, of course, a bug. I will fix that, so that it kick the error back to your client as it should.
But I know you are interested in the cause of the error itself. When you get this error, you should break into your client and look in teh debugger at the request it passed to the server. Look at ALL the arguments and find which object whose class is not included in this Array:
MagmaRepositoryController basicNew protocol
THAT is the one that is causing the problem.
- Chris
Hi Hilaire, for whatever class you are getting "id not found" look in your client at this path:
theMagmaSession link serializer classIdManager classesById
In 'classesById' look for the id of the class the server image is claiming is not found. THAT is the class of the object that is causing the problem.
Is that the IFICompetencyCollection ? What is IFICompetencyCollection ?
Regards, Chris
On Dec 12, 2007 6:26 AM, Hilaire Fernandes hilaire@ofset.org wrote:
Thanks for your advices, it is helpful.
In this place of the application I am not using read strategy. In other place of the application where I am suing read strategy I don't have the problem, so may be it is a problem underneath.
In the Magma client I only have the modification to StrikeFont>>maAsStorageObject so TextMorph are persisted correctly. I apply this change both to client and server :
StrikeFont>>maAsStorageObject ^ DiskProxy global: #StrikeFont selector: #familyName:pointSize:emphasized: args: { self familyName. self pointSize. self emphasis }
Chris, I went until the MaTcp...>>submit: method, but I don't really understand where to look.
From the MaCommitPackage, the MagmaCollectionChanges looks like:
collectionOid: 4112481 changes: a Dictionary(#added->an IdentityDictionary(66543->an OrderedCollection(#(250776336) #(0) #(10625597) an IFILevelCollection() #(1)) ) #removed->an IdentityDictionary() ) isNewCollection: false collection: a MagmaCollection
The problem happens when I add an object to a MagmaCollection
IFIDbSession commit: [pedagogicalMoments add: moment]
In this commit, TextMorph persitency occurs. I repeat this code is working when Magma is in local mode.
In the client, MagmaRepositoryController basicNew protocol returns, where only IFICompetencyCollection is new (the server has the same protocol size):
{LargePositiveInteger . MaSerializedGraphBuffer . MaByteObjectBuffer . MaVariableWordBuffer . MaVariableObjectBuffer . MaFixedObjectBuffer . MaStorageObjectBuffer . MaVariableBuffer . MaLargeCollectionSegmentRequest . MaLoadProgressRequest . MaRefreshSegmentRequest . MaDownloadCodeRequest . MaLoadFromReaderRequest . MaReaderTrunkRequest . MaAbortTransactionRequest . MaRepositoryConnectionRequest . MaWriteRequest . MagmaPathNameRequest . MaCloseRepositoryRequest . MaLargeCollectionSizeRequest . MaAbstractReadRequest . MaTransactionRequest . MagmaIdRequest . MaAnchorRequest . MaReadRequest . MaKeyIntervalInfoRequest . MaSegmentByIndexRequest . MaRepositoryDisconnectRequest . MaCommitPackage . MaBasicReadStrategy . MaReadStrategy . MagmaCollectionSegment . MaRefreshViewResult . MaReadResult . MagmaLargeCollectionSegment . MaCommitResult . MagmaCollectionReaderSegment . MaFailedCommitResult . MagmaId . UUID . MaFailedCommitResult . MagmaClientConnection . MagmaCommitConflict . Fraction . MaClause . MaExpression . MaQueryTrunkClause . MaQueryTrunk . MagmaSet . IFICompetencyCollection . MagmaCollection . IdentityDictionary . MagmaIndexDescription . MagmaArrayChanges . MagmaCollectionChanges . Association . MaChangedKeySpecification . MaEnvironmentError . MaObjectSerializationUserError . MaUnreadableRecoveryRecord . MagmaEquivalentObjectNotInCollection . MagmaSoftwareError . MaNetworkError . MagmaSessionLost . MagmaEnvironmentError . MaObjectSerializationSecurityViolation . MaHashIndexUserError . MagmaUserError . MagmaInvalidIndexObject . MagmaCommitError . MaClientServerUserError . MagmaCorruptionError . MaSecurityViolation . MagmaGarbageCollectedObject . MagmaDuplicateObjectInCollection . MaSoftwareError . MaCorruptionError . MagmaInvalidOid . MaUserError . MaMalformedRequestError . MaObjectSerializationSoftwareError . MaSpecialCollectionsSoftwareError}
Le mardi 11 décembre 2007 à 23:06 -0500, Chris Muller a écrit :
Hi Hilaire, a the MalformedRequest error is telling you the server received a request from your client that it could not properly materialize. Specifically, it looks like your Magma client has attempted to extend the Magma #protocol ("class id not found"). Are you running a modified Magma client?
It does look like the error-handling code incorrectly passes the MalformedRequestError Exception AS the request which is, of course, a bug. I will fix that, so that it kick the error back to your client as it should.
But I know you are interested in the cause of the error itself. When you get this error, you should break into your client and look in teh debugger at the request it passed to the server. Look at ALL the arguments and find which object whose class is not included in this Array:
MagmaRepositoryController basicNew protocol
THAT is the one that is causing the problem.
- Chris
Magma mailing list Magma@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/magma
magma@lists.squeakfoundation.org