MessageNotUnderstood: MaMalformedRequestError>>repositoryController:

Chris Muller ma.chris.m at gmail.com
Fri Dec 14 16:01:24 UTC 2007


> I don't see yet why this is happening with this specific object.

In your client, put a halt in the
MaTcpRequestServerLink>>#getByteArrayResponseFor: aMaServerRequest.
When it halts explore that aMaServerRequest to verify you do indeed
have IFILevelCollection in there somewhere (exploring all the way
down, if necessary).  We need to trace back why/how you are putting
this in the request, because the generic Magma Server knows nothing of
IFILevelCollection's.  That's why it is signaling a MalformedRequest.

 - Chris

On Dec 14, 2007 5:09 AM, Hilaire Fernandes <hilaire at ofset.org> wrote:
> 2007/12/14, Chris Muller <asqueaker at gmail.com>:
> > 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 ?
>
> Ok, in the server side I have  to put a halt in the following message
> to get the missing class ID, otherwise the error message in the server
> is not helpful as the ID is not provided at this moment. Not sure if
> you can have the ID shipped in the error message object, it will be
> helpful:
>
> classDefinitionsForId: anInteger
>         ^ self
>                 classDefinitionsForId: anInteger
>                 ifAbsent: [self halt. MaObjectSerializationSoftwareError signal:
> 'class-definition not found' ]
>
> Now I see my missing id is 206, and it is an IFILevelCollection, a
> subclass of OrderedCollection.
> This class is also present in the server image, but I guess there is
> no relation.
> This class is very simple, only with methods addLast: and findLevelWith:
>
> I don't see yet why this is happening with this specific object.
>
> > Regards,
> >   Chris
> >
> > On Dec 12, 2007 6:26 AM, Hilaire Fernandes <hilaire at 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 at lists.squeakfoundation.org
> > > http://lists.squeakfoundation.org/mailman/listinfo/magma
> > >
> > >
> >
>
>
> --
> http://blog.ofset.org/hilaire
> Smalltalkers do: [:it | All with: Class, (And love: it)]
>


More information about the Magma mailing list