Hello all,
After a few days of getting mostly nothing from an evolving
Seaside+Apache setup, I got it running. A lot suddenly happened on two
machines, and there is no telling what I might have done to cause
trouble on my own. Anyway, two things deserve mention. Sorry to throw
these at you, but I think I can explain one of them.
The first problem might have been continuations in action. I use
streams often and will somewhat frequently read files as I process them,
using #ensure: to close them. It ends up looking like
in := FileStream read:fileName text:true.
[
"code that might raise an error"
] ensure:[
in close.
].
Despite this construction, I ended up with errors trying to open a file,
and ended up closing and reopening Pharo to regain access to it. In
Dolphin, that was an almost certain sign that I had not properly ensured
the closing of a stream. Based on recent discussions of #terminate, I
began to suspect that closing the debugger thwarted the ensure block.
However, I note that
[ nil halt. ] ensure:[ Transcript show:'Did it'. ].
has been doing pretty much what I expect it to do: close the debugger
and the block executes. So, I suspect what in fact happened is that a
continuation caused me to re-open the file before it was closed. I am
starting to like Seaside, but I wish it were based on threads and
synchronization objects, but that's another topic. Whether or #ensure:
behaves correctly in response to #terminate is something I need to
check. For now, I will probably read the file into memory and close it
before Seaside gets involved.
The second thing that happened was I ended up with an image in which the
system browser was out of synch. Clicking on the name of one method
would show source for another. When I saw that, I assumed the change
log had been clobbered, but not knowing what else to do, I exited w/o
saving and recreated what I had lost in the process. The recovery was
probably not what you would think. I had been coding on "the other
machine" (win2k3 image on a blade via remote desktop), and was trying to
integrate a few things into my "real" image (on my local machine) that I
did to get the Seaside app working. Somewhere in that process, the
browser mess started. I did something along the lines of firing off a
new browser (probably from a method I was editing) to add a new method.
I have noted that Pharo gets a little upset, (correctly) warning about
possible changes elsewhere. The simple explanation is that this time,
it "mis-filed" what I did in that new browser. Specifically, I (most
likely) overwrote everything and accepted the source of the method.
Sorry for the lengthy and un-confirmed guesswork masquerading as a bug
report. I'm not sure I _want_ to reproduce it :(
Bill
Wilhelm K. Schwab, Ph.D.
University of Florida
Department of Anesthesiology
PO Box 100254
Gainesville, FL 32610-0254
Email: [EMAIL PROTECTED]
Tel: (352) 273-6785
FAX: (352) 392-7029
_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project