I have a new problem, surely due to some less-than-bight act on my
part. I am using Cees' Kilauea magma-server image download, and have
Magma 1.0 loaded in my working image.
I wasn't able to load Magma-seaside-mmb.2.mcz, so I'm creating the
session on my own in the #initialize method of the top component,
beginning a transaction right off the bat, and doing a 'session
commit; begin' when the user clicks 'Save'. So I'm always in an open
transaction -- the last of which never gets closed. I'm sure this
isn't the right way to do this, but couldn't think of a better way.
I've added data to the repository using this method all day, but
still guess this may have something to do with my problem. Just
before things went south, I had been breaking, er, modifying my
Seaside components, and had started quite a few new sessions.
Now upon startup, the server produces an 'Error: a primitive has
failed' error while (I think) reading a MaHashIndexRecord. Looking at
http://localhost:21000/, all the repositories are shutting down. I've
tried abandoning, and doing 'MagmaSession cleanUp', and then saving
as a new version, but get an error (in
MagmaCollectionManager>>collectionOid, respository session is nil).
Any ideas on getting going again? I really only have one repository I
care about, and don't need the MagmaCollection, as I can recreate it
from the other data in the repository.
P.S. I had joined the mailing list, but sent from the wrong account
(not the first time I've made that mistake :)
On Feb 23, 2006, at 11:45 PM, Chris Muller wrote:
> Hm, you definitely found a bug. Enumerating a
> non-persistent MagmaCollection (as opposed to a
> Reader) is very rare, so I'm not surprised no one
> noticed this.
> I have now posted Magma1.0-cmm.4 on SqueakSource which
> fixes this bug. A quick fix, but the test cases
> Thank you, Brian, for pointing it out and also for
> providing such an easy way to reproduce it. Easily
> reproduced = easily fixed!
> - Chris
> PS - Your e-mail was rejected by the list, I had to
> manually approve it. I hope you will join us on the
> Magma list.
> --- Brian Murphy-Dye <[hidden email]> wrote:
>> The following code snippet shows a size of 10, but
>> #do: processes
>> those 10 items twice. Any ideas what I'm doing
>> m := MagmaCollection new.
>> 1 to: 10 do: [:each | m add: each].
>> Transcript show: String cr, 'size: ', m size
>> asString, String cr.
>> m do: [:each | Transcript show: each asString,
>> String cr].
> I wasn't able to load Magma-seaside-mmb.2.mcz, so
> I'm creating the
> session on my own in the #initialize method of the
> top component,
> beginning a transaction right off the bat, and doing
> a 'session
> commit; begin' when the user clicks 'Save'. So I'm
> always in an open
> transaction -- the last of which never gets closed.
Use commitAndBegin, a bit faster because it does the
commit and gives you a new transaction in a single
call to the server.
> Now upon startup, the server produces an 'Error: a
> primitive has
> failed' error while (I think) reading a
> MaHashIndexRecord. Looking at
> http://localhost:21000/, all the repositories are
> shutting down. I've
> tried abandoning, and doing 'MagmaSession cleanUp',
> and then saving
> as a new version, but get an error (in
> MagmaCollectionManager>>collectionOid, respository
> session is nil).
> Any ideas on getting going again? I really only have
> one repository I
> care about, and don't need the MagmaCollection, as I
> can recreate it
> from the other data in the repository.
Were you doing a local or remote repository? It
sounds like the underlying files are closed but the
repository is still trying to access them. The image
shutDown/startUp code closes/opens the repository,
disconnects/reconnects all sessions, so something got
out of sync.