You are currently browsing the monthly archive for March 2009.
As much fun as round trips can be, when those roundtrips are over the WAN using GemTools, it can get a bit tiring.
A little over a month ago (GLASS.230-dkh.194) I added the class OBUpdateConcentrator to GLASS. The job of the concentrator is to collect OB-related #update: messages sent to Morphic widgets on the client from the server and ship them across the wire in one roundtrip instead of n roundtrips (see this section for more info). The net effect is that the number of roundtrips for browser interactions is reduced by about 50%.
I didn’t turn on the concentrator for the latest preview, because there were some apparent update problems (they may have been transient Pharo problems). After announcing the preview, I realized that folks who need to connect over the WAN probably wouldn’t mind a few update problems in return for better UI performance. So I decided to make another preview drop primarily aimed at providing relief for roundtrip sufferers.
In order to turn on the concentrator, the method ClientForwarder>>_asOop needs to be implemented. the method contains a primitive call and you need to be SystemUser to compile the method, so you need to use topaz (your input highlighted in gray):
foos:c_gss64bit_230>topaz -l
___________________________________________________________________________
| Configuration Files |
| |
………………….
|_____________________________________________________________________________|
topaz> set user SystemUser pass swordfish
Warning: GemStone is clearing the previous GemStone password.
topaz> login
[Info]: LNK client/gem GCI levels = 830/830
[Info]: User ID: SystemUser
[Info]: Repository: c_gs64stone_230
[Info]: Session ID: 2
[Info]: GCI Client Host: <Linked>
[Info]: Page server PID: -1
[Info]: Login Time: 03/25/09 13:46:51.706 PDT
gci login: currSession 1 rpc gem processId -1
successful login
topaz 1> method: ClientForwarder
_asOop
<primitive: 86>
self _primitiveFailed: #asOop
%
topaz 1> commit
Successful commit
topaz 1> logout
After defining the method and committing, it is worth turning off some of the optional UI features (in the Preferences Browser under the browsing category), namely: annotationPanels, mercuryPanel, optionalButtons, and syntaxHighlightingAsYouType. These OB options, while useful, consume additional roundtrips for each refresh of the browser. Yes, the preferences you set in your client (either Squeak or Pharo) will be propogated to the server…
Last night I ran some tests from home running against a stone on my office desktop machine and got a 3x performance boost (3 seconds per click versuse 10 seconds per click). I started doing some development tasks to make sure that all of the browsers were functional when optionalButtons is disabled (it turned out that the Test Runner wasn’t the first time around) and while I wasn’t doing intense development (I was keeping an eye on the Utah/Rockets game), the performance was good enough that I forgot that I was working on a stone in the office.
GemStone-dkh.449
There have been no major changes in the GemTools since the last preview release other than a new Find… Menu command was added called Case Sensitive String…, which searches through all method source doing a case sensitive search.
Take a look at the GemTools change log for a complete history of changes since GemStone-dkh.441.
GLASS.230-dkh.216
In addition to the roundtrip performance improvements, a number of bugs have been fixed:
- fix Bug39828 – fastcgi and uploadfile problems
- fix Bug39766 – WAGsWalkbackErrorHandler is not subclassable
- fix Bug39778 – Collection should include #ifNotEmpty:ifEmpty:
- fix Bug39810 – Can’t use DateTimes in SIXX
- fix Bug39869 – Unicode and debugging
- fix Bug38428 – a collection of glass shards in the browser
- fix Bug38458 – Monticello Browser – Viewing history has impact on repository pane
- fix Bug39369 – MCReader(C)>>readerClassForFileNamed: needs more error checks
- fix Bug39552 – case-sensitive methods containing search
- fix Bug38320 – SystemBrowser update problem
- fix Bug38389 – WB, trying to load a package that had it’s working copy deleted
- fix Bug38436 – Nothing happens on Repository Browser:”refresh”
- fix Bug38438 – Browse Monticello package needed
- fix Bug39756 – need to implment String>>restoreFromSnapshot:
- fix Bug39763 – Date>>+ has bugs
- fix Bug39579 – confusing warning from Monticello save after a merge
- fix Bug38424 – Need way to propogate compiler warnings to tools
- fix Bug39755 – MC1 should raise errors when there are unloaded classes methods
- fix Bug39767 – possible stack overflow during FileDirectory>>forceNewDirectoryNamed:
- fix Bug38550 – Confirmation for Monticello unl;oad package
Take a look at the GLASS change log for a complete history of changes since GLASS.230-dkh.209.
Updating
If you are already using a preview GemTools client, you only need to follow these instructions. If you are using a version of the GemTools Client earlier than GemStone-dkh.441, then you should follow these instructions.
—–
[1] Photo by BenJTsunami (Creative Commons).
Announcement from theComplex:
James Foster of Gemstone will lead the workshop. You will also have the opportunity to work with prominent members of the Santa Fe Complex on projects. Sessions run from 8:30 – 4:00 from Monday, March 30 – Thursday, April 2 and from 8:30 – noon on Friday, April 3. Lunch and breaks are included in the $375 fee. For more information, e-mail Dr. Dave West at profwest@fastmail.fm or phone him at 505-231-7233.
—–
[1] Photo by Sister72 (Creative Commons).
Terse Guide to the (new) GLASS Tools post has been updated.
Thanks to James, there is a one-click GemTools 2.4 download are two one-click GemTools preview downloads available based on Pharo. Use the 2.3.0 preview with version 2.3.0 of GemStone/S (like the 1.0beta11 appliance) and the 2.3.1 preview with version 2.3.1 of GemStone/S. [Updated 4/10/2009: see Version Mismatch (preview) for details]
—–
Photo by Steve Wampler (Creative Commons).
Andreas Brodbeck has announced Seashell:
Coming from the Rails world, I clearly see that there is yet missing some proven best practices for the hosting of a Gemstone powered seaside application server. Progress on GemTools is moving fast, that’s super fantastic! And I always felt that there should be a bare access to the deployment, a more basic direct access from the shell, too.
In the world of Rails there is a solid tool called capistrano, which you can use as a deployment servant.
Andreas makes a good point, the production deployment and stone management tools for GLASS leave a lot to be desired. Just ask Danie Roux. Not long ago, he blogged about using Rake to manage multiple GemStone database instances.
I haven’t had a chance to look at either of these tools in detail, but I am glad that the community is stepping in to fill a void.
BTW, there are github repositories for both tool sets: Seashell and GemStone Management scripts.
—–
[1] Photo by florriebassingbourn (Creative Commons).
In the last month, Gerhard Obermann and I have been pretty busy. Between us we’ve made over 80 updates to the GemTools package and over 20 updates to the GLASS package.
At this point in time, I think that the GemTools Launcher (GemStone-dkh.441) and the OmniBrowser tools are stable enough that you no longer need to be Brave and/or Curious to take the new tools and GLASS.230-dkh.209 for a spin. In fact the tools are probably in better shape now than they’ve ever been (I haven’t seen the MNU storms that would periodically appear in the old client for quite awhile). If you’re reluctant to upgrade, check out the new Backup/Restore commands. Being able to backup/restore your repository from the GemTools Client should ease your mind.
I still have between 50 and 100 issues that I want to address (mainly on the server-side) before the next beta release. In the mean time, I am all but done with the UI changes and I would like feedback from folks on the new commands. If you haven’t already, join the beta mailing list and send mail with your comments and suggestions.
If you run into (gasp!) a bug, use the new Bug Report commands to report the bug. Honestly, I would rather have people report 100 duplicate bugs than miss 1 valid bug report – don’t assume that I know about the problem!
GemStone-dkh.441
There have been a significant number of changes to the GemTools Client since the last preview release, so many that I decided to update the old Terse Guide to the GLASS Tools with a new post: Terse Guide to the (new) GLASS Tools. All of the menu items for the GemTools Launcher are documented.
If you haven’t already created a new GemTools client smalltalk image, then follow these instructions.
If you’ve already updated to a preview release, then you’ve already got a new Squeak/Pharo image and all you need to do is to update to the latest version of the GemTools Client, using these instructions.
Take a look at the GemTools change log for a complete history of the changes made between GemStone-dkh.355 and GemStone-dkh.441.
GLASS.230-dkh.209
In addition to the support needed for the GemTools Launcher a number of bugs were fixed:
- Bug39820 – packages dirtied unnecessarily when recompiling subclasses
- Bug38105 – HTTPSocketError not correctly loaded
- Bug38794 – Subclass creation method leaves instance creation disabled
- Bug39838 – ExceptionA class>>hasFixFor39741 breaks some things
- Bug38146 – unload class and remove method should clean up undeclared sybmols
- Bug39798 – UndefinedSymbols is not maintained correctly
- Bug39850 – MCPackageBrowser doesn’t update when package dirtied
- Bug39345 – ‘Squeak browser tools need move-to-category button’
- Bug39578 – ‘”revert to version” in “Versions of” method browser does not autocommit’
- Bug39303 – sorting of change list in Monticello brower is strange
- Bug39823 – missing OSkSocketReadStream>>upToEnd
- Bug39800 – SeasideTesting has probably decayed…
- Bug39777 – Cannot ‘browse’ ProtoObject without a walkbalk
- Bug39772 – Class>>allSubInstancesDo: always fails
- Bug39582 – lots of key-not-found errors using Vocabulary browser
- Bug38140 – ‘highlight inspect’ feature for debugger
- Bug38274 – need visual separation between ancestors in MCWorkingCopy>>summary
- Bug38304 – CTL-i on a String or Smallinteger ends up with Squeak inspector
- Bug39662 – Inspecting a float in GLASS results in a ‘Float out of Range’ error in Squeak
- Bug39827 – missing base method for GLASS
- Bug39795 – MAPriorityContainer>>remove: fails unexpectedly
Other highlights include:
- A belated update to Seaside2.8.3.
- Update to Pier 1.1.1.
- Improved Debugger, Inspector, and Chasing Inspector.
The following packages have bee removed from the GLASS package:
- MonticelloConfigurations
- Pier-LightBox
- Pier-Twitter
- SqueakSource
- TinyWiki
These packages are not automatically removed by the update process. If you aren’t using them, then you should manually unload them using the Monitcello Browser. If you don’t remove them you may see test failures for the UndefinedSymbolsTest and SentButNotImplementedTest. After removing the above packages the tests should run clean (4182 run, 4182 passed, 0 failed, 0 errors).
Once you’ve updated to the latest version of the GemTools Client, follow these instructions to update the GLASS server software to GLASS.230-dkh.209.
Take a look at the GLASS change log for a complete history of the changes made between GLASS.230-dkh.187 and GLASS.230-dkh.209.
—–
[1] Photo by placbo (Creative Commons).
[Update 6/5/2010] For the latest GemTools 1.0-beta.6 documentation see the GemTools Guide on the glassdb wiki.
This post started out as a beta update post, but as I added more and more material I realized that it deserved to be a reincarnation of the Terse Guide to the GLASS Tools. It’s been a year since I wrote the original Terse Guide and there have been significant changes to the whole GLASS tool set, so a new version has been long overdue. However, I do have an announcement post to finish (and it depends upon the information in the Terse Guide), so rather than delay the announcement of the preview release, I decided to publish the Terse Guide before it was complete.
I have completed all of the sections that describe the new functionality of the GemTools Launcher, including a section on installing the GemTools Client in a fresh image. Over the next week, I plan to finish the Terse Guide.
Over time as new features are added I intend to revisit and revise this post. To that end, I’ve created a little update section, where I’ll record information about the updates I make over time:
- current as of GemStone-dkh.441 and GLASS.230-dkh.209 (March 12, 2009)
- one-click GemTools download available, based on Pharo0.1 update 10243 (March 22, 2009)
- Process Browser section updated as of GemStone-dkh.465 and GLASS.230-dkh.228 – Philippe how do you like the fonts? (April 14, 2009)
All of the screen shots in this post were taken using a Pharo image. The GemTools Client runs in both Squeak and Pharo images (see Installation and Update Steps for instructions on setting up an image).
You can click on the screen shots in this post to see full size images.