Work in Progress eventual replacement for glassdb/glass project
Gofer new
package: 'GsUpgrader-Core';
repository: (MCGitHubRepository location: 'github://GsDevKit/gsUpgrader:dev/repository');
load.
(Smalltalk at: #GsUpgrader) upgradeGsDevKit.
Automatically exported from code.google.com/p/glassdb
~From Hernan:
I'm trying to create a class without superclass (that is, nil as
superclass) and I can't because UndefinedObject does not implement
#subclass:instVarName:...
Back in July I switched to using
#instVarNames:classVars:classInstVars:poolDictionaries:inDictionary:category:
for creating classes from Monticello and if anyone attempts to create a
subclass of nil itself, they will run into trouble, because that method
isn't implemented in UndefinedObject...
Need to fix that.
internal bug: 40431
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 8:53
What steps will reproduce the problem?
| file |
file := GsFile openReadOnServerCompressed: 'nohup.out.gz' .
Array with: file position with: file fileSize with: file atEnd
anArray( 0, 2833, true)
| file |
file := GsFile openReadOnServer: 'nohup.out.gz' .
Array with: file position with: file fileSize with: file atEnd
anArray( 0, 2833, false)
What is the expected output? What do you see instead?
atEnd = false
Original issue reported on code.google.com by [email protected]
on 28 Jan 2010 at 8:22
It should be in one of the mcz packages, but is in SessionMethods symbol
dictionary ... also it's in an odd method category
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:25
From Norbert:
there is a problem with Date in gemstone. I discovered using my pier blog.
The problem is that
(Date readFrom: (Date today asString readStream)) year
is 1910. The publication set by pier is a short form of mm/dd/yy and it
seems that on save time when it gets parsed the year becomes 1910.
In Date>>readFrom:
there the lines
year < 10 ifTrue: [year := 2000 + year]
ifFalse: [ year < 1900 ifTrue: [ year := 1900 + year]].
So from this year on printing and parsing are not complementary.
-----
From Gerhard:
I think the follwing timestamps should return the same result:
(TimeStamp fromString: '01/12/10 09:43:29') asSeconds -2870781391
(TimeStamp fromString: '01/12/2010 09:43:29') asSeconds 284978609
Tested with GemStone 2.3.1.6! (Metacello 0.232.3)
It does work in Pharo or Squeak.
Original issue reported on code.google.com by [email protected]
on 27 Jan 2010 at 5:59
TimeZone current dstPrintString. " SAST "
(DateAndTime year: 2010 month: 1 day: 24) dayOfWeek "A Sunday, returns 7,
should have returned 1".
What is the expected output? What do you see instead?
I expected the Sunday to be listed as day 1.
Please provide any additional information below:
Fix is to add the offset to the seconds, like so:
^(seconds + offset) // 60 // 60 // 24 + 1 \\ 7 + 1
Further methods that might need to take into consideration offset:
asDays
asSeconds
asPosixSeconds
DateAndTime>>asDuration
Original issue reported on code.google.com by danie%[email protected]
on 26 Jan 2010 at 2:55
~From Ramon:
I think somethings wrong with the FastCGI implementation.
Everything seems to work fine until you enable mod deflate. With mod
deflate enabled, and keep alives on, Apache works fine and serves up a
static xml file or html file compressed just fine, but if you hit gemstone
the page is served fine, compressed, but the connection is held open until
the keepalive timeout expires. Disabling keep alives allows the connection
to die immediately, but is not really a great solution.
I put this in the root virtual host...
<IfModule deflate>
# http compression
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml
application/xhtml+xml text/javascript text/css
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>
9:51amDale
What is the desired bahavior?
9:52amRamon
that it knows when the connection is over and closes it
9:52amDale
on the Gemstone-side?
9:52amRamon
I'm unsure where the problem lies, but it's not apache, I tested with
static file to make sure
apache disconnects immediately when finished serving the file
but if you hit a gemstone page, apache holds the connection open for
whatever you keep alive timeout is, not sure how apache and fastgci
communicate or how mod deflate interacts with that
9:54amDale
Is it the connection to the browser that is kept alive or is the connection
between Apache and GemStone that is kept alive
9:54amRamon
in fact, I belive, just enabling mod deflate, without even putting anything
into your config, causes this to happen
the browser
could be both, don't know
9:56amDale
hmmm...I'll look at the code ... it interesting that the keepAlive setting
is the culprit ...
9:56amRamon
yup, and it only happens in the presense of mod deflate, otherwise the keep
alive stuff works as it should
Original issue reported on code.google.com by [email protected]
on 14 Jan 2010 at 12:39
~From Paul:
===== Your comments ============================================
Hi,
So I thought it would be a good idea to use a word for the version
number of a monticello commit a week or so ago. Now when I want to
load that commit or save what I have as another version, I get tons of
errors. I chose to use a word to signify that it is the deployment
version of a package, in which I deleted all the half baked ideas I
was exploring and just kept the bits that did the work.
For instance, instead of LaBoquitas-pad.23.mcz I changed it to
LasBoquitas-pad.slice1.mcz It saved just fine but now I cannot save
the changes I have made since then to another repository or load the
LasBoquitas-pad.slice1.mcz. I can change the
LasBoquitas-pad.slice1.mcz to LasBoquitas-pad.23.mcz in the filesystem
and load it just fine. But then I cannot save it afterwards.
The error when saving is: "An attempt was made to create an instance
of Float from ReadStream but either the format is incorrect or the
contents of ReadStream are incomplete."
I haven't tried loading it in a few days and don't want to in the
event it wipes out my changes during that time. I have uncompressed
the .mcz file and changed the string in the file 'version', but that
doesn't seem to have helped. I have backed up my repository so don't
think I am at risk of losing my changes, I just can no longer use
Monticello with this package. For other packages it works just fine.
===== Your comments end =======================================
===== Backtrace ==================================================
...
...
===== Backtrace end =============================================
27 May 2009 9:54:45 am
Client VM: unix - a SmalltalkImage
Client Image: Pharo0.1 [Latest update: #10259]
GemTools Client: GemStone-dkh.467
GLASS: GLASS.230-dkh.231
===== Client Version Report ============================================
cpuArchitecture: ia32
cpuKind: x86_64
gsBuildArchitecture: ia32 (Linux)
gsBuildDate: Thu Dec 4 11:33:32 2008
gsRelease: 2.3.1
gsVersion: 2.3.1
nodeName: paul-laptop
osName: Linux
osRelease: 2.6.28-12-generic
osVersion: #43-Ubuntu SMP Fri May 1 19:31:32 UTC 2009
processId: 16950
processorCount: 2
===== Stone Version Report ===========================================
cpuArchitecture: x86-64
cpuKind: x86_64
gsBuildArchitecture: x86-64 (Linux)
gsBuildDate: Thu Dec 4 11:33:32 2008
gsRelease: 2.3.1
gsVersion: 2.3.1
nodeName: paul-laptop
osName: Linux
osRelease: 2.6.28-12-generic
osVersion: #43-Ubuntu SMP Fri May 1 19:31:32 UTC 2009
processId: 16881
processorCount: 2
===== Preferences ============================================
annotationPanes=true
mercuryPanel=true
optionalButtons=true
syntaxHighlightingAsYouType=true
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 11:42
MCVersionNode>>packageName and MCRepositoryNode>>workingCopyFor: should
be using this algorithm to extract package name from working copies:
| all wc |
all := MCWorkingCopy allManagers select: [:ea | | pName |
pName := ea package name.
(packageName beginsWith: pName)
and: [ (packageName size = pName size)
or: [ (packageName at: pName size + 1) = $- ]]].
all isEmpty ifTrue: [^ nil].
wc := all detectMax: [:ea | ea package name size]
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:22
running Seaside unit tests in 3.0, I hit in infinite loop, two samples of
the stack with USR1 resulted in the same stack:
Signal SIGUSR1 received printingStack ...
Begin attempt to print C-level stack at: Fri Jul 17 16:31:07 PDT 2009
Thread 4 (Thread 0x4275f950 (LWP 17541)):
#0 0x00007f56ed15a941 in recv () from /lib/libpthread.so.0
#1 0x00007f56ebe87598 in SocketRead ()
#2 0x00007f56ebe7aac1 in stnOobReaderThreadFn ()
#3 0x00007f56ed1533f7 in start_thread () from /lib/libpthread.so.0
#4 0x00007f56ec4fab3d in clone () from /lib/libc.so.6
#5 0x0000000000000000 in ?? ()
Thread 3 (Thread 0x40a78950 (LWP 17542)):
#0 0x00007f56ed15a941 in recv () from /lib/libpthread.so.0
#1 0x00007f56ebe87408 in SocketRead2 ()
#2 0x00007f56ebe7ad37 in shrpcmonSocketReadFn ()
#3 0x00007f56ed1533f7 in start_thread () from /lib/libpthread.so.0
#4 0x00007f56ec4fab3d in clone () from /lib/libc.so.6
#5 0x0000000000000000 in ?? ()
Thread 2 (Thread 0x41279950 (LWP 17543)):
#0 0x00007f56ec4f1c86 in poll () from /lib/libc.so.6
#1 0x00007f56ebdb426a in timeoutThreadFn () at intloopamd64.asmm4:7419
#2 0x00007f56ed1533f7 in start_thread () from /lib/libpthread.so.0
#3 0x00007f56ec4fab3d in clone () from /lib/libc.so.6
#4 0x0000000000000000 in ?? ()
Thread 1 (Thread 0x7f56ed56c6f0 (LWP 17537)):
#0 0x00007f56ed15b34f in waitpid () from /lib/libpthread.so.0
#1 0x00007f56ebe54292 in forkAndWait (
#2 0x00007f56ebe54458 in HostPrintCStack ()
#3 0x00007f56ebe8debf in HostFaultHandler ()
#4 <signal handler called>
#5 0x00007f56ebdc5a2c in om::decodeUTF8_493 () at intloopamd64.asmm4:7419
#6 0x00007f56e79e7917 in ?? ()
#7 0x00007f56e1908ed8 in ?? ()
#8 0x00007f56ebd4b9ab in IntLpBCLoop () at intloopam64.m4:1
#9 0x00007f56ebd31bf8 in IntLpSupControlLoop ()
#10 0x00007f56ebd287e1 in IntContinue ()
#11 0x00007f56ebc3fe0d in GemDoContinue ()
#12 0x00007f56ebc03650 in dispatchLoop ()
#13 0x00007f56ebc051c9 in GemDoRpcLoop ()
#14 0x00007f56ebbfca7e in doConnect ()
#15 0x00007f56ebbfd64a in dispatchCommand ()
#16 0x00007f56ebbfdcaf in Gdbg ()
#17 0x00007f56ebc05c3f in gemMain ()
#18 0x0000000000401465 in main (argc=4, argv=0x7ffff55865c8)
Need to do a little more work to isolate which unit test is causing the
infinite loop (as we didn't get a Smalltalk stack from USR1)...
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:34
~From Ken:
The current FastCGI handler is adding expiration dates to my cookies
when I really don't want it to.
FSSeasideHandler>>addCookie:toStream: gets a lot simpler (and does
what I want w.r.t. expiration dates) if I change it to simply:
> addCookie: aWACookie toStream: aStream
> aStream nextPutAll: 'Set-Cookie: '.
> aWACookie writeOn: aStream.
> aStream
> nextPut: Character cr;
> nextPut: Character lf
Maybe it's just left-over debugging code, or maybe somebody's front-
end needed the current implementation, but this one works for me on
Apache and nginx.
--
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:32
Given a class hierarcy like the following:
A ()
B (ivar)
C (ivar)
an error will occur if an attempt is made to move the ivar instance
variable to A (and remove it from B and C) to achieve the following hierarchy:
A (ivar)
B ()
C ()
The shadowing error occurs when rebuilding subclasses of the new class A
... When it occurs the browser will end up showing something like the
following:
A ()
A (ivar)
B (ivar)
C (ivar)
Where class A shows up twice in the browser, once for the new class A and
once for the old superclass of B and or C...
The fix involves catching the shadowed ivar error and scheduling recompiles
for all of the subclasses of the class that originally created the error,,,
This problem has shown up when trying to load Pier 1.2 on top of Pier 1.1
in GLASS
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 8:51
I think there is a bug in SeasideHTTPService>>unwrapCookies:
unwrapCookies: aHttpRequest
| cookies |
aHttpRequest hasCookie
ifTrue: [ cookies := aHttpRequest cookies ]
ifFalse: [ cookies := Dictionary new. ].
^ cookies
The ifTrue: block is not right. The parameter aHttpRequest is from class
HTTPGet and this does not have a cookies method. It has only a cookie
method.
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 11:32
~From Danie:
During our upgrade, we realised that MCPlatformSupport autoCommit and
autoMigrate is true by default.
We needed that to be false so that we can load in our code and then
first run our migrations. In fact, generally we prefer to control when
we commit when we are in a topaz session.
I think I understand the reasoning behind this (you want this to
happen automatically in GemTools). It confused me for quite a time
that that migrations did not want to work as expected :-)
-------------
Perhaps the defaults should be off when GemTools is not involved
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:26
Need to have an ensure block around the initialization section that makes
sure that the package meta information is updated correctly...
Original issue reported on code.google.com by [email protected]
on 14 Jan 2010 at 12:53
Hi, I have a compatibility issue between Gemstone and Squeak. My
application needs to display a Float (SmallDouble in Gemstone) asString,
formatting with 3 decimals.
Ej: 3.234897234 -> '3.234'
On Squeak I am doing:
SomeClass>>stringFromFloat: aFloat
aFloat isNil
ifTrue: [^'']
ifFalse: [ ^aFloat roundTo: 0.001 asString].
And on Gemstone I do:
SomeClass>>stringFromFloat: aFloat
aFloat isNil
ifTrue: [^'']
ifFalse: [ ^aFloat asStringUsingFormat: #(10 3 false)].
I don't found a common method to do that so I have to modify this methods
on each ambient. Wich is the correct solution for that?
I am using Squeak for development and Gemstone for deploy. I would like the
process of put my code in production was trivial. Is it possible?
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:40
Maybe this is fixed in the new tools .
I did a file out of some individual categories and methods, and
some of the resulting files have spaces in the file names.
Fileout should use '_' , not ' ' in file names .
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 11:32
@dhenrichs adding a "Create method" button on the walkback dialog when a
DNU is raised would be necessary too. ;-)
(http://twitter.com/emaringolo/status/4657868302)
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:16
Edit a couple of methods in the Maglev .mcz
open Monticello tool, pick Maglev, pick cache , pick changes
The PatchBrowser is showing
One would think the patch browser would show
changes from ancestor to current, but it actually shows
changes from image to the ancestor.
So the window should have a title or info line
saying "changes from image to ... " in some form,
Then it would be clear that the "Install" button means revert .
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:31
FSSeasideHandler>>#'answerResponderRoleCheckingLock:' line 28 attempts to
commit an instance of a subclass of ExceptionA. This object holds an
ExceptionHandler that includes an ExecutableBlock. This block seems to
include sufficient context that it includes the gate semaphore in
FSGsSocketServer. In general, it appears that persisting exceptions runs a
risk of dragging disallowed objects to the database.
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 11:19
I believe the send of _digitLength
should be digitLength
category: '*squeak'
classmethod: Base64MimeConverter
encodeInteger: int
| strm |
"Encode an integer of any length and return the MIME string"
strm := ReadWriteStream on: (ByteArray new: int digitLength).
1 to: int _digitLength do: [:ii | strm nextPut: (int digitAt: ii)].
strm reset.
^ ((self mimeEncode: strm) contents) copyUpTo: $= "remove padding"
%
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:04
I should be able to define undefined class names in the TestCase, and once
defined it should recompile. That would allow real #tdd on #gs64
(http://twitter.com/emaringolo/statuses/4642302959)
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:18
self error: 'blah' should end up showing 'blah' as the messageText on
the client, instead the error string is show as:
'The Specified Error Dictionary contains no information for error number
2318 in the...'
I assume that this might be related to the fact that the category field
is repurposed at times for the new ANSI scheme...
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 11:30
#operation is the selector not understood
[1] Exception >> signal (envId 0)
res: nil
receiver: aMessageNotUnderstood
[2] Object >> doesNotUnderstand:args:envId: (envId 0)
aSymbol: #'operation'
anArray: anArray( )
envId: 0
ex: aMessageNotUnderstood
receiver: aMCConflictNode
[3] Object >> _doesNotUnderstand:args:envId: (envId 0)
aSymbol: #'operation'
anArray: anArray( )
envId: 0
aProc: nil
prefix: nil
receiver: aMCConflictNode
[4] MCPatchAwareNode >> install (envId 0)
loader: aMCPackageLoader
receiver: aMCConflictNode
[5] MCCmdInstallOperation >> execute (envId 0)
receiver: aMCCmdInstallOperation
[6] [] in OBCommand >> clientExecute (envId 0)
self: aMCCmdInstallOperation
receiver: aMCCmdInstallOperation
[7] OBUpdateConcentrator >> recordUpdatesDuring: (envId 0)
aBlock: anExecBlock0
self: anOBUpdateConcentrator
receiver: anOBUpdateConcentrator
[8] OBCommand >> clientExecute (envId 0)
self: aMCCmdInstallOperation
receiver: aMCCmdInstallOperation
[9] System class >> _gsReturnToC (envId 0)
receiver: nil
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:20
~From Thierry:
On a Mac, when opening a System browser from GemTools 2.3.1 preview,
to GLASS beta 11, after few clicks on the right panel, I get an error:
Message not Understood: OBMorphicIcons>>arrowUpAndDown.
If the System browser is closed and then reopened, then error goes
away for few clicks, but it eventually comes back.
It seems to happen when looking at the class side of the class
Behavior. I tried few other classes and this was fine.
---------------
Here's the implementation:
arrowUpAndDown
^self overriddenAndOverrides
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:24
While working with a GemStone application that Tobias sent to me
(help with performance), I discovered that SpError was catching
Notifications incorrectly. With James' help we tracked the problem down
and have a proposed solution.
GemStone-Exceptions-dkh.33 has the proposed fix.
Tobias is using Hyper for his own RESTful web server based on GLASS,
which explains why we haven't seen this problem in the wild for
Seaside users
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 11:31
http://twitter.com/ramon_leon/status/1854095632
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 11:53
Casting a vote for inclusion of another "do nothing" method in the
Bootstrap package.
SmalltalkProxy>>addToStartUpList: anObject after: anotherObject
"Do nothing for now. Semantics for what needs to be started
at
'start up' differs between GemStone and Squeak"
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:21
Using the instructions at:
http://gemstonesoup.wordpress.com/2009/04/15/glass-beta-update-working-with-soap
-preview/#Hyper
I was able to update my GemTools client and GLASS code to the versions that
would enable me to
use Hyper as my HTTP server.
The instructions for modifying:
/opt/gemstone/GemStone64Bit2.3.1-x86_64.Linux/seaside/bin/startSeaside_Hyper
worked great as well, and the server started up nicely.
However, when trying to point FireFox to the url:
http://localhost:9765/seaside
I got an error loading the page. This worked previously with the Swazoo
code ( By a fortuitous coincidence I had tried it out just before updating to
Glass.230-dkh.231 ...) .
The error was resolved by specifying the server machine name instead of
localhost:
http://sally:9765/seaside
===== Your comments end =======================================
===== Backtrace ==================================================
...
...
===== Backtrace end =============================================
21 May 2009 4:06 pm
Client VM: unix - a SmalltalkImage
Client Image: Pharo0.1 [Latest update: #10243]
GemTools Client: GemStone-dkh.467
GLASS: GLASS.230-dkh.229
===== Client Version Report ============================================
cpuArchitecture: ia32
cpuKind: x86_64
gsBuildArchitecture: ia32 (Linux)
gsBuildDate: Thu Dec 4 11:33:32 2008
gsRelease: 2.3.1
gsVersion: 2.3.1
nodeName: sally
osName: Linux
osRelease: 2.6.24-19-generic
osVersion: #1 SMP Wed Jun 18 14:15:37 UTC 2008
processId: 32744
processorCount: 2
===== Stone Version Report ===========================================
cpuArchitecture: x86-64
cpuKind: x86_64
gsBuildArchitecture: x86-64 (Linux)
gsBuildDate: Thu Dec 4 11:33:32 2008
gsRelease: 2.3.1
gsVersion: 2.3.1
nodeName: sally
osName: Linux
osRelease: 2.6.24-19-generic
osVersion: #1 SMP Wed Jun 18 14:15:37 UTC 2008
processId: 338
processorCount: 2
===== Preferences ============================================
annotationPanes=true
mercuryPanel=true
optionalButtons=true
syntaxHighlightingAsYouType=true
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 11:44
sometimes its useful for FileDirectory to refer to Server...in 3.0 it's
worth adding ClientFileDirectory and making FileDirectory configurable
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:37
Observations from using the new Pharo tools for Ruby development:
The new .mcz and Metacello tools will be a big help.
It is nice to be able to open class hierarchy browsers directly,
but all the other problems below mean no net change in ease of
basic code browsing.
In a method source pane, the ctl-F key binding is broken.
In a class hierarchy browser, select a method.
Then in the top-right pane (list of methods)
middle-click on the already selected method , and pick
either implementors or senders.
Even though I have already selected a method I have to make a choice
from a list; I should not have to make any choice.
Browsers give too much space to the top half panes.
Open a new class hierarchy browser .
Move the middle divider so top panes are 1.3 inches high,
and method source pane is 4.5 inches high
Then pick a large method.
Increase size of the hierarchy browser window to try to see
all the source. When method source pane is 6.1 inches high,
the top half has grown to 3.0 inches, thus the 1.3/4.5 ratio
previously set is destroyed in a manner making it difficult
to browse large methods.
A smart browser would hold top half size constant, once it was
altered from the default, and only increase method source
pane size. An even smarter browser would automatically
adjust the ratio as needed to show most of a large method.
If I try to left button double-click on a keyword with leading underscore,
it still does not include the underscore in the selected characters.
I am programming in an ANSI Smalltalk and don't want to see Squeak
stupidities like this.
If these tools are supposed to be really smart, they would
set the top-half vertical size in an implementors-of or
senders-of browser to be just big enough to display the number
of implementors or senders.
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:27
May nd up with lots of junk in object log that may not get cleaned out ...
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:35
either wire out the file existence test for the mac or put in the proper
test for a file in the resource directory on mac ...
we were mislead by the fact that we could put a new gciForMacintosh.so file
in the .image directory (where the test is) but we were still using a
different .so file to load ...even when changing file names ...
at a minimum we should put an explanatory comment...
GemTools 1.0-beta.1
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:00
----- "Sebastian Van Lacke" <[email protected]> wrote:
| Hi, I am working on a form containing a fileUpload input. When the
| user submit the form I get a WAFile instance.
| Then I need to save this file on disk, using a relative path to the
| site dirctory served by Apache. I don't know what kind of file/stream
| I have to use. Better if it is compatible with Squeak plataform.
|
| Thanks,
|
| Sebastian
Sebastian,
To be compatible with Squeak (or close to it), use ServerFileDirectory and
#newFileNamed: to get the equivalent of a FileStream.
ServerFileDirectory is preferable to using FileDirectory (in GemStone),
because FileDirectory uses GCI to transfer the bytes to disk.
Presumably a ServerFileDirectory class can be added to Squeak (perhaps in
MockGemStone) that delegates to FileDirectory...
Dale
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:38
I'm working on the Graphviz port to GS and was wondering if there is
an equivalent to...
SmalltalkImage current platformName
...that will work in both Squeak and GS?
What is the preferred way to get the platform in GS?
i've been lazy to date, and hardcoded a #isGemStone method, but would
like to stay compatible with Squeak if possible.
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:03
FileBrowser and ProcessBrowser are the obvious tools to disable when
working with old versions of GLASS
Original issue reported on code.google.com by [email protected]
on 28 Jan 2010 at 9:35
~From Andrey:
===== Your comments ============================================
After upgrading GLASS to latest version. Swazoo and SwazooSeaside
package are unloads.
===== Your comments end =======================================
===== Backtrace ==================================================
...
...
===== Backtrace end =============================================
21 June 2009 2:13:04 am
Client VM: unix - a SmalltalkImage
Client Image: Pharo0.1 [Latest update: #10243]
GemTools Client: GemStone-dkh.467
GLASS: GLASS.230-dkh.231
===== Client Version Report ============================================
cpuArchitecture: ia32
cpuKind: i686
gsBuildArchitecture: ia32 (Linux)
gsBuildDate: Thu Dec 4 11:33:32 2008
gsRelease: 2.3.1
gsVersion: 2.3.1
nodeName: smalltalk
osName: Linux
osRelease: 2.6.24-24-server
osVersion: #1 SMP Wed Apr 15 16:36:01 UTC 2009
processId: 4673
processorCount: 2
===== Stone Version Report ===========================================
cpuArchitecture: x86-64
cpuKind: x86_64
gsBuildArchitecture: x86-64 (Linux)
gsBuildDate: Thu Dec 4 11:33:32 2008
gsRelease: 2.3.1
gsVersion: 2.3.1
nodeName: debian
osName: Linux
osRelease: 2.6.26-2-amd64
osVersion: #1 SMP Thu May 28 21:28:49 UTC 2009
processId: 5014
processorCount: 2
===== Preferences ============================================
annotationPanes=true
mercuryPanel=true
optionalButtons=true
syntaxHighlightingAsYouType=true
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 11:28
Given this hierarchy in a hierarchy browser opened on A
Object
A
B
C
D
And given that Object>>name is remplemented in
B>>name
C>>name
If you select B>>name and do hierarchy implementors,
you get a list showng Object>>name , B>>name
If you then select Object>>name
and ask for hierarchy implementors you get a whole bunch
of other subclasses of Object that are not displayed in the
current hierarchy browser, like GsFile>>name ... .
What I wanted was to find other classes within those opened
in the hierarchy browser that implemented name .
Original issue reported on code.google.com by [email protected]
on 14 Jan 2010 at 12:56
~From Dario:
i have Gemstone 2.3.1 update to GLASS.230-dhk.231.
Hyper server started on port 50081
GemTools is update to Gemstone-dkh.467.
I set:
SoapExampleClient hostAddress: #monviso ( my server in a local area
network )
SoapExampleClient port: 50081
SoapSetting defaultPort: 50081
SoapSetting defaultSendingPort: 50081
I register services with:
SoapExampleServiceImpl registerAllServices
Now when do command:
SoapExampleClient new callHelloWorld
the system raise the error : 'SoapNoNamespacePrefix: Namespace prefix
must be provided! signal: 'Namespace prefix must be provided !'
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 11:26
GemTools logins fail with a DNU on some Linux
systems. This is rather discouraging for new users.
On Linux, it's a common practice to put /boot on a separate boot
partition, and to not automatically mount this partition at boot
time. On Linux systems configured this way, the GemTools fail to find
the GCI library, and give a DNU walkback on an attempt to log in.
GciLibrary class>>isOnLinux is answering false, when it should answer
true. This in turn is exposing a bug in GciLibrary class>>moduleName,
which is not handling unknown platforms correctly.
The current code for #moduleName:
moduleName
| path |
self isOnWindows ifTrue: [path := 'gciForWindows.dll' ] ifFalse: [
self isOnLinux ifTrue: [path := 'gciForLinux.so' ]
ifFalse: [
self isOnMacintosh ifTrue: [path := 'gciForMacintosh.so' ]]].
(path notEmpty and: [FileDirectory default fileExists: path]) ifTrue:
[^path].
self error: 'Library file not found!'.
What's failing is the "path notEmpty" test, since path is nil. The
test should be "path ~~ nil".
The current code for #isOnLinux:
isOnLinux
^(FileDirectory on: '/boot/grub') exists.
This will always answer false on systems that do not mount the /boot
partition, or on systems where the user does not have read permissions
on /boot. A better implementation, which relies only on the proc
pseudo-filesystem created by the Linux kernel:
isOnLinux
| dir file |
dir := FileDirectory on: '/proc'.
dir exists ifFalse: [^false].
(dir fileExists: 'version') ifFalse: [^false].
file := dir readOnlyFileNamed: 'version'.
file == nil ifTrue: [^false].
^(file next: 5) = 'Linux'
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:36
~From Gerhard:
We have a lot of issues with hanging fastcgi session.
They session seems to be some kind of long running transactions, which seems
running forever.
Is it possible to find out whats going on on such fastcgi sessions.
Is it possible to stop a session and have a backtrace?
Now to the interesting part.
During this exercise I have also checked the FASTCGI logs and found some
strange entries (see below)
A lot of these Exceptions are inside each fastcgi log file.
BTW we are still using Seaside shipped with GS 2.2.5.1!
After some hours I found out that a RcKeyValueDictionary returns an
exception if nil is used as key.
at: aKey ifAbsent: aBlock
"Returns the value that corresponds to aKey. If no such key/value pair
exists,
returns the result of evaluating the zero-argument block aBlock."
| hash |
aKey == nil ifTrue: [ ^ self _error: #rtErrNilKey ].
hash := self hashFunction: aKey.
^ (self _rcAt: hash) at: aKey ifAbsent: aBlock
Not sure if this could or should be changed.
This leads me to ..
handleKeyRequest: aRequest
| key handler keyString |
"Under some circumstances, HTTP fields are collections of values"
key := [keyString := aRequest at: self handlerField.
(keyString isKindOf: OrderedCollection) ifTrue: [keyString :=
keyString first].
WAExternalID fromString: keyString] on: Error do: [:e | FSLog
log: e displayString. nil].
"*** obi *** changed to avoid exception if nil is used as key"
handler := key == nil ifTrue: [nil] ifFalse: [handlersByKey at: key
ifAbsent: [nil]].
^ (handler notNil and: [handler isActive])
ifTrue: [handler handleRequest: aRequest]
ifFalse: [self handleExpiredRequest: aRequest]
Still not the root cause of the problem!
Investigations continue ....
Now i get "seed out of range" in my FSLog log files,
which I get from this code!
seed: aSeed
(aSeed <= 0 or:[aSeed >= 2147483646]) ifTrue:[
self error:'seed out of range: ', aSeed asString
].
seed := aSeed.
hi := lo := nil.
After some more hours I find that code in TransientRandom!
initialize
"adjust the default seed by session serial number so that vms started at
same time won't get same seed"
"*** obi *** avoid serial numbers > 32768 > ((GsSession serialOfSession:
System session) bitShift: 16))"
super initialize.
self seed: (seed bitXor: (System session bitShift: 16)).
This code seems to create sometimes a number higher than 2147483646 if
your serial of your session becomes higher than 32768 which is the case in
our database!
As workaround I am using now only the session id instead of the serial!
Cheers
Gerhard
----------- Internal FASTCGI L
OG ENTRY: anArray-----------
----------- Internal FASTCGI ERROR Encountered: 2009-07-09T07:57:24+02:00
InterpreterError 2090: An illegal attempt was made to store nil as a key in
the dictionary <a
RcKeyValueDictionary( nWjo7HqjV-i8Rn2c->aWADocumentHandler,
sJwJprEYl7AOHAbG->aWADocumentHand
ler, NKIrxFEC8sI5mbqQ->aWADocumentHandler,
CIPWWV5YEhUgEDSY->aWADocumentHandler, dYXAcWEnnFls
C6-6->aWADocumentHandler, ANftzNKZHgZTKCxS->aWADocumentHandler,
LFfvyBkjx28cQoh3->aWADocument
Handler, RTPCn9pO44ujTzsp->aWADocumentHandler,
1AXAljiNFjGLsxT-->aWADocumentHandler, YQESKa-2
KbADzhBV->aWADocumentHandler, m7gWzG9531a-URYF->aWADocumentHandler,
rmKLMQtVyNKK56ei->aWADocu
mentHandler, 43oGbNY15mHA2E9i->aWADocumentHandler,
70OwTx8yjGfaZz3P->aWADocumentHandler, MERi
bYJ4F8qZkME9->aWADocumentHandler, tgVtELaNF3O74jOl->aWADocumentHandler,
KCUoqJ4QTcy0lj1C->aWA
DocumentHandler, UbXz9YFHlLiG8LsZ->aWADocumentHandler, ...)>.
1 SeasidePlatformSupport class >> logError:title: @2 line 4 [GsMethod OOP
18787042305]
2 FSSeasideHandler >> internalServerMalfunction: @21 line 16 [GsMethod OOP
18787761153]
3 ComplexBlock in FSSeasideHandler >> answerResponderRoleCheckingLock: @49
line 48 [GsMethod
OOP 80432154113]
4 ExceptionA >> valueHandler: @7 line 8 [GsMethod OOP 17933527809]
5 ComplexBlock in ExceptionHandler >> valueHandlerBlock @6 line 5 [GsMethod
OOP 17933428225]
6 ComplexBlock in ExecutableBlock >> ensure: @4 line 11 [GsMethod OOP
15157071873]
7 ComplexBlock in ExecutableBlock >> ensure: @6 line 11 [GsMethod OOP
15157071873]
8 ExceptionHandler >> valueHandlerBlock @10 line 6 [GsMethod OOP
17933428225]
9 ExceptionHandler >> caughtException @3 line 4 [GsMethod OOP 17933427713]
10 ExceptionHandler >> caughtEx:number:cat:args: @15 line 19 [GsMethod OOP
18708189953]
11 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9 [GsMethod
OOP 17933425921]
12 Exception >> _signal:number:args: @2 line 7 [GsMethod OOP 15157083137]
13 Exception >> resignal:number:args: @5 line 11 [GsMethod OOP 15157083393]
14 ExceptionA >> doResignal @13 line 12 [GsMethod OOP 17933436417]
15 ExceptionHandler >> caughtException @4 line 5 [GsMethod OOP 17933427713]
16 ExceptionHandler >> caughtEx:number:cat:args: @15 line 19 [GsMethod OOP
18708189953]
17 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9 [GsMethod
OOP 17933425921]
18 Exception >> _signal:number:args: @2 line 7 [GsMethod OOP 15157083137]
19 System class >> signal:args:signalDictionary: @5 line 13 [GsMethod OOP
17215472129]
20 Object >> _error:args: @7 line 10 [GsMethod OOP 15160393473]
21 Object >> _error: @2 line 5 [GsMethod OOP 15160885249]
22 RcKeyValueDictionary >> at:ifAbsent: @3 line 7 [GsMethod OOP
17755095553]
23 WARegistry >> handleKeyRequest: @15 line 7 [GsMethod OOP 18724398081]
24 WARegistry >> handleRequest: @5 line 3 [GsMethod OOP 18724398849]
25 WAApplication >> handleRequest: @10 line 6 [GsMethod OOP 18720801793]
26 WADispatcher >> handleRequest: @7 line 5 [GsMethod OOP 18782107649]
27 ComplexBlock in FSSeasideHandler >> answerResponderRoleCheckingLock: @11
line 10 [GsMetho
d OOP 80432154113]
28 ExceptionHandler >> try:on:in:do: @13 line 13 [GsMethod OOP 17933425921]
29 ExceptionSet >> try:on:do: @2 line 4 [GsMethod OOP 17933425409]
30 ComplexBlock in ExecutableBlock >> on:do: @2 line 8 [GsMethod OOP
17933422849]
31 ComplexVCBlock in FSSeasideHandler >> answerResponderRoleCheckingLock:
@17 line 11 [GsMet
hod OOP 80432154113]
32 ComplexBlock in ExecutableBlock >> ensure: @4 line 11 [GsMethod OOP
15157071873]
33 ComplexVCBlock in ExecutableBlock >> ensure: @6 line 11 [GsMethod OOP
15157071873]
34 TransientRecursionLock >> critical: @15 line 8 [GsMethod OOP
18721979905]
35 ComplexVCBlock in FSSeasideHandler >> answerResponderRoleCheckingLock:
@45 line 6 [GsMeth
od OOP 80432154113]
36 ExceptionHandler >> try:on:in:do: @13 line 13 [GsMethod OOP 17933425921]
37 ExceptionA class >> try:on:do: @2 line 4 [GsMethod OOP 17942070017]
38 ComplexVCBlock in ExecutableBlock >> on:do: @2 line 8 [GsMethod OOP
17933422849]
39 FSSeasideHandler >> answerResponderRoleCheckingLock: @52 line 46
[GsMethod OOP 8043215411
3]
40 FSSeasideHandler >> answerResponderRole: @3 line 6 [GsMethod OOP
18787761921]
41 FSResponderRole >> answer @2 line 4 [GsMethod OOP 18782822657]
42 FSRole >> handleConnection @3 line 5 [GsMethod OOP 18782809601]
43 FSConnection >> unsafeServe @4 line 8 [GsMethod OOP 18782914561]
44 ComplexBlock in FSConnection >> safeServe @5 line 8 [GsMethod OOP
18782929665]
45 ExceptionHandler >> try:on:in:do: @13 line 13 [GsMethod OOP 17933425921]
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:39
If I change SpIPAddress class>>hostName:port: to be
hostName: aHostNameString port: aPortNumber
"^an SpSocketAddress
I translate aHostNameString to an IP address and then create
a new instance of myself with >>host:port:"
^self host: aHostNameString
port: aPortNumber
instead of:
hostName: aHostNameString port: aPortNumber
"^an SpSocketAddress
I translate aHostNameString to an IP address and then create
a new instance of myself with >>host:port:"
^self host: (GsSocket getHostAddressByName: aHostNameString)
port: aPortNumber
The test passes ... so the the _early_ getHostAddrssByName: appears to the
be culprit
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:30
what he said
Original issue reported on code.google.com by [email protected]
on 14 Jan 2010 at 12:55
~From Andreas:
A rather painful thing is that I develop on Squeak/Pharo and deploy to
Gemstone. There are still some incompatibilities between those dialects (as
expected) which are real pitfalls. But it's good to know, that this is
beeing worked on, and it will get better and better. I did get some help
from the Sport portability library (but did not manage to install the same
version of it on Squeak like it is within GLASS...).
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 11:54
For few minutes I started to wonder what was happening. My changes
were not visible through the web browser. I then realized that I had
just added an instance variable. This creates a new class version in
Gemstone.
~From an older comment from Dale, re-registering the app did the trick.
But It would be nice if there was an indication in GemTools that there
are existing class versions.
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:23
Here's the test case from Ken:
'123 456' substrings
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 11:52
In the OB System Browser code pane, I type Ctrl-F to search for something,
it brings up the "Information Required" dialog, and I enter a search term
and then click "OK". I get an MNU OopType64>>environment.
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:29
I found a bug in our application last night which was due in part to
an incompatibility between Squeak and GemStone's squeak-ish layer.
* In Squeak, DateAndTime>>asTime returns a Time object that represents
the time in the DateAndTime's frame of reference:
DateAndTime now asUTC asTime "gives current UTC time"
* In GemStone, DateAndTime>>asTime returns a Time object that is
translated into local time:
DateAndTime now asUTC asTime "gives current local time"
I fixed this by implementing DateAndTime>>secondsSinceMidnight
(another Squeak method) and modifying #asTime to use it:
> secondsSinceMidnight
> ^self hour24 * 60 + self minute * 60 + self second
>
> asTime
> ^Time fromSeconds: self secondsSinceMidnight
One of the wacky things here is how Squeak's DateAndTime>>midnight
means "midnight local time", but DateAndTime>>secondsSinceMidnight
uses "midnight in my frame of reference". And I love the use of
Smalltalk message precedence in #secondsSinceMidnight (not my idea, I
saw it in somebody else's code a while ago).
But curiosities aside, this fix did the trick for us.
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:33
Paul submitted the following information:
HyHTTPClient getUsingURIString:
'http://www.google.com/search?hl=en&q=harry+potter&btnG=Google+Search&aq=f&oq='.
HyURI fromStream: (ReadStream on:
'http://www.google.com/search?hl=en&q=harry+potter&btnG=Google+Search&aq=f&oq=')
.
If you inspect the first line in GLASS, you'll notice that Google
replies with a 400/Bad Request error
if you inspect the second line you'll notice that in the queries the +
is replaced with a space. It happens if the + is %20 as well on other
websites.
----
then submitted this followup:
it seems if you change HyURI
decodedHTTPFrom: to
decodedHTTPFrom: encodedString
"^a String
URI encodes to 7 bit ascii. I return the decoded form of
encodedString. Note that the decoded string is really an octet array
so that things like UTF-8 can be encoded in a URI."
| targetStream asciiStream |
targetStream := WriteStream on: String new.
asciiStream := ReadStream on: encodedString.
[asciiStream atEnd] whileFalse:
[| char |
char := asciiStream next asCharacter.
char == $%
ifTrue: [targetStream nextPut: char]
ifFalse:
[char == $+
ifTrue: [targetStream
nextPut: char]
ifFalse: [targetStream
nextPut: char]]].
"char == $%
ifTrue: [targetStream nextPut: (self
charFromNextTwoHexDigitsIn:
asciiStream)]
------
This isn't really correct, but it indicates the the client shouldn't be
decoding HTTP ... it backs to that I need a definitive set of tests for
where decoding is and is not expected to be done ...
Original issue reported on code.google.com by [email protected]
on 14 Jan 2010 at 12:54
From Norbert:
| Than I did bootstrap the server. I just changed one thing from the
| blog. I don't want to install it in the seaside directory because
| there I have a working installation. So I copied the directory to a
| different and changed the shell scripts and bootstrapped it there. For
| my taste the locations necessary to be changed in the shell scripts
| could be minimized. But it works and is not too hard to achieve. In
| the blog post you write that it is needed for the stone to be shut
| down before copying. A note that you need to start it before using
| the topaz stuff would be helpful ;)
Original issue reported on code.google.com by [email protected]
on 18 Jan 2010 at 5:58
from Hernan:
Hi Dale,
maybe UndefinedSymbol shoud raise an error saying something like 'you
are sending a message to an undefined symbol bla bla bla'... will make
the error more evident, don't you think?
On Wed, Jul 8, 2009 at 1:32 PM, Dale Henrichs<[email protected]>
wrote:
> Joel,
>
> You are tripping across the UndefinedSymbols handling mechanism in GLASS
... when you add or remove parens, you are recompiling the method thus
satisfying the UndefinedSymbol.
>
> As a quick workaround, I would suggest that in the Monticello Browser you
select your Milestone package and use the 'recompile package' menu item ...
all of the refs should be fixed at that point.
>
> In the future, I think that you should define the symbol
#MilestoneProductionSystem before loading the code.
>
> In standard GemStone, undefined symbols are compile errors, so for GLASS
I implemented a workaround that made it possible to have references to
undefined classes that were resolved once the class was defined (by
recompiling the methods - that's the Set that you see in your error
message). This was required for Monticello to work.
>
> I don't have a good answer for resolving symbols that refer to non-class
globals.
>
> I do recommend that you 'Inspect UndefinedSymbols' (on the Tools menu in
GemTools) after loading packages into GemStone, to uncover these kinds of
issues.
>
> Dale
>
> ----- "Joel Turnbull" <[email protected]> wrote:
>
> | I've been developing a simple web application to manage what I call
> | Milestones, using Seaside and Magritte.
> |
> | I just loaded up the code into a freshly unpacked GLASS appliance
> | (beta 11).
> |
> | I did
> | UserGlobals at: #MilestoneProductionSystem put: MilestoneSystem new
> |
> | When I tried in Seaside to browse my MilestoneRootWidget I got the
> | error
> |
> | MessageNotUnderstood 2010: No method was found for the selector
> | <#'milestones'> when sent to <aSet(
> | MilestoneRootWidget->'addMilestone',
> | MilestoneRootWidget->'editMilestone:',
> | MilestoneRootWidget->'initializeReport',
> | MilestoneRootWidget->'refreshReport',
> | MilestoneRootWidget->'removeMilestone:',
> | MilestoneRootWidget->'viewMilestone:', Milestone->'changes')> with
> | arguments
> | contained in <anArray( )>.
> |
> | stemming from this method
> |
> | initializeReport
> |
> | report := ( MAReport rows: ( MilestoneProductionSystem
> | milestones)
> | description: Milestone new descriptionReport ).
> | report addColumn: ( MACommandColumn new addCommandOn: self
> | selector:
> | #viewMilestone: text: 'View').
> | report addColumn: ( MACommandColumn new addCommandOn: self
> | selector:
> | #editMilestone: text: 'Edit').
> | report addColumn: ( MACommandColumn new addCommandOn: self
> | selector:
> | #removeMilestone: text: 'Remove').
> |
> | I found that when I remove some parentheses from the second line like
> |
> | report := ( MAReport rows: MilestoneProductionSystem milestones
> | description: Milestone new descriptionReport ).
> |
> | It fixed the problem.
> |
> | Alternatively, when this method gave me a similar error
> |
> | changes
> |
> | ^ MilestoneProductionSystem historyOf: self
> |
> | I found that adding parentheses fixed it
> |
> | changes
> |
> | ^ ( MilestoneProductionSystem historyOf: self )
> |
> | It seems that anywhere MilestoneProductionSystem is referenced I'm
> | having to
> | add or remove parentheses. Any idea what is going on here?
>
Original issue reported on code.google.com by [email protected]
on 13 Jan 2010 at 9:40
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.