You are currently browsing the monthly archive for October 2008.
Last week Dario Trussardi submitted a bug report to the GLASS Beta mailing list (subscription required, but feel free to subscribe if you’re interested). The bug involved Magritte auto accessors – a feature whereby new instance variables (and accessor methods) are dynamically added to a class on demand. Dario was triggering the new instance variable creation during the rendering phase of a Seaside component and getting an Internal Server Error from Seaside:
InterpreterError 2403: Cannot commit, <‘a previous commit attempt failed with an error, this transaction must be aborted’>
This error doesn’t have the most intuitive explanantion and the stack dumped into the object log was rooted in the standard commit that occurs right before the HTTP response is returned to the browser – not much help.
I had tangled with the auto accessors before, in the Magritte unit tests, but Dario’s scenario wasn’t covered there. Dario provided a simple test case and I was off to the races. In the end I was able to fix the problem in Dario’s test case (at this writing I’m waiting for confirmation from Dario – when I get it I’ll publish a Beta Update), but I thought that it would be instructive to cover the issues involved in case anyone else wanders into this territory.
If you’re using Magritte auto accessors or are seeing 2403 errors or want to geek out on GemStone for a bit or have already settled down with a cup of coffee to “read another long post of mine” (yes I’m talking about you, Gera:), then by all means read on.
- #readUsing: and #writeObject:using:
- Magritte auto accessor and Seaside
Last week while I was on vacation, I got my wife interested in using Pier for her Saluki website. I used the latest appliance with Pier 1.0.17. We made some changes to Pier like setting up the menu, changing the color scheme and removing some of the features included in the default Pier setup (post ticker on every page). My wife spent the bulk of the week playing with Pier – adding content and pictures.
By the end of the week she was very pleased with the potential – she’s been thinking of putting together a website bragging about our current and past Salukis. Pier is pretty easy for her to use and has just about everything she wants in her website and for the missing features and some of the nitty gritty details, she’s got me. I’m pleased because I’m sorta familiar with GLASS and if anything isn’t working right I have a reasonable chance of fixing it – I’d much rather be fixing things in Smalltalk:)
So far I haven’t deviated from the standard Seaside installation, but I know that I will be doing a few Pier-specific things like setting up PRFile to use MAExternalFileModel (scheduled for tonight) and possibly one or two other things which I’ll document as I go along.
[Update 3/16/2009: see the post GLASS Beta Update: Cooking with GLASS (Preview) for the latest GLASS preview release. A new appliance is not yet available, so to use the new tools you should update to a new version of the GemTools Client and GLASS Server, using these instructions].
1.0Beta11 is based upon GLASS.230-dkh.164, see the 2.3 announcement for details.
If you are using an earlier version of the appliance, we suggest that you start using the 1.0beta11 appliance
Then on Wednesday morning (October 15) he’ll be doing a guest lecture at NCSU in Raleigh, North Carolina.
James will also give his presentation in Raleigh, but the details have not been worked out. Send mail to James dot Foster at GemStone dot com for details if you are in the Raleigh area and are interested in attending.
 Photo: The Eastern Seaboard, Uploaded by EAWB on 11 Mar 06, 6.38PM PDT.
From a GLASS perspective, there are a handful of new features in the 2.3 release:
- Support for full Unicode character range with introduction of QuadByteString and MultiByteString classes
- Primitive support for UTF8 encoding (100x faster than Smalltalk-based algorithm).
- Primitive support for HTML encoding.
- Thread local support for GsProcess and continuations. Thread locals are being used in Seaside2.9.
- Improved ProfMonitor output code moved from GLASS-only to base image.
For a full description of the new product features and bugfixes, check out the Release Notes.
Between the last Beta Update (GLASS.230-dkh.162) and the 2.3 product release, I managed to slip in a couple of bugfixes for Pier and FastCGI. As I mentioned earlier, Pier 1.0.17 is installed as part of the Seaside release in 2.3.
You can find 2.3 downloads for Mac and Linux on the Glass Downloads page.
Follow the instructions in the Install Guide, or follow James Foster’s instructions and/or screencast. James’ instructions are aimed at installing 2.3 on Slicehost, but his instructions are useful for any *NIX install.
If you have been using 2.2.5, you will want to upgrade your repository from 2.2.5 to 2.3. Start by following instructions in the Install Guide for “Upgrading from previous GemStone/S 64 Bit 2.x versions” and after those steps have completed without error, run
using the same arguments you used with the upgradeImage script. This script ensures the SessionMethods are enabled, updates the UTF8Encoding package to to Utf8Encoding.230-dkh.21 and recompiles all methods that are managed under Monticello. Utf8Encoding.230-dkh.21 is the required for correct UTF8 encoding of DoubleBytesStrings and instances of the new class QuadByteString.
Assuming that you were running with GLASS-dkh.122, with the inclusion of the new UTF8 package, you will be running with the same code as GLASS.230-dkh.162, so after the upgrade is complete you will want to load GLASS.230-dkh.164 so that you are using the latest code. If you are using a custom-built repository, then you will want to update your build scripts to use Utf8Encoding.230-dkh.21 for future builds.
I’ve run several successful tests using this upgrade script on several different repositories, one of which dates back to 1.0beta6 (I’ve been continuously upgrading it since last February), but I will be interested in any issues that folks may run into in upgrading their 2.2.x Seaside repositories. If you have a Maintenance agreement with GemStone, please submit any bug reports through the Technical Support site, otherwise submit mail to the Beta Mailing list (subscription required) and we’ll help resolve any issues you may run into.
Martin along with Travis Griggs is putting on a workshop entitled ‘Smalltalk Superpowers — their uses for good and for evil’. Details on the workshop can be found at http://smalltalk-superpowers.org (the site is using Pier, so check it out).
James is giving two tutorials: ‘Introduction to Web Technologies (Tutorial 8)’ and ‘Can you be rich and thin? Building Dynamic Web Applications with Seaside (Tutorial 37)’.
 Photo: Bicentennial Mall, Tennessee Map, Nashville, Tennessee, Uploaded 14 Feb 06, 4.02PM PDT by hanneorla