15.06.2009

WGA 4.1.8 ab sofort verfügbar
by Oliver Weise
Categories: general, server

Das Wartungsrelease steht wie üblich im Download-Bereich der IG-Website zur Verfügung.

Kunden welche den WebTML-Cache nutzen (<tml:range cachekey="tmlscript">) bitten wir eine Verhaltensänderung zu beachten die wir im folgenden erläutern:

Das bisherige Verhalten des WebTML-Caches liess bei der Berechnung eines WebTML-Caches weitere Requests, die denselben Cache verwenden, warten bis dieser fertiggestellt wurde.

Auf Websites, die einen besonders aufwendigen Cache auf vielen Seiten verwenden, z.B einen aufwendigen Haupt-Navigator, führte dies bei Neuberechnung dieses Caches häufig zu Situationen, wo sehr viele Requests aufliefen und letztlich keine Requests mehr fertiggestellt wurden bis der Cache berechnet ist.

Diese Situation ist in mehreren Aspekten gefährlich. Einerseits kann dies von Administration wie Benutzern als Stillstand oder Absturz interpretiert werden. Andererseits führt das Auflaufen vieler Requests zu einer problematischen Anhäufung der verwendeten Systemressourcen.

Um dies zu verhindern wurde das Standardverhalten des WebTML-Caches in diesem Release wie folgt geändert:

Während ein WebTML-Cache berechnet wird dürfen weitere Requests die denselben Cache benötigen ab sofort die vorherige, veraltete Version des Caches weiter ausliefern, insofern eine solche vorhanden ist. Dies erlaubt die Veröffentlichung leicht veralteter Daten für einen kurzen Zeitraum, stabilisiert jedoch den Server im oben beschriebenen Szenario da weitere Requests, die einen gerade berechneten Cache benötigen, nun normal weiterarbeiten und beendet werden können.

Nach Vollendung der Cache-Berechnung werden alle Requests die aktuellen, soeben berechneten, Cache-Daten verwenden und es werden keine veralteten Daten mehr publiziert.

Wenn sie weiterhin die Verwendung des alten WebTML-Cache-Verhaltens wünschen, so können sie dieses weiterhin über die Festlegung der folgenden Publisher-Option pro Datenbank erzielen:

WebTMLCache.ServeStaleData := false

Potentielle Gründe dafür, das neue Verhalten nicht zu verwenden sind:
  • Sie verwenden verschachtelte WebTML-Caches, d.h. einige Caches beinhalten selbst wieder die Resultate anderer Caches. In diesem Fall können die veralteten Daten in äusseren Caches länger publiziert werden.
  • Das zeitweilige Publizieren leicht veralteter Daten ist generell problematisch in ihrem Fall
Wir empfehlen jedoch zugunsten der Server-Stabilität das neue Verhalten zu verwenden.

Die kompletten Releasenotes dieser Version:

New Feature: Disable JMX functionalities
Since on some application servers (websphere) the JMX metrics of WGA do not work and cause error messages we should make it possible to disable JMX for WGA.
New Feature: Allow WebTML cache to serve stale data while the cache is recalculated by another request
The fact that a WGA request waits for a needed WebTML cache, while this is calculated by some other request, proves to be some threat to WGA healthiness, like any other situation that forces many requests to wait for something. Often this leads to a situation where more and more threads run up, finally occupying the complete thread pool of the application or http server or crashing the database server bc. of too many open sessions.

Therefor we should change the standard behaviour of a request..
New Feature: Function to "rename ACL entry"
Create the ability to rename an ACL entry while keeping its other data.
New Feature: Ability to create WGA access loggers programmatically
Some database types like plugins can not be configured to have an access log.

To at least be able to create such a log programatically the involved classes should have constructors that allows their creation without a configuration from the wga.xml (which currently is not the case).
New Feature: Use <tml:input type="boolean"> without options
Currently <tml:input type="boolean"> is only usable when specifying options that represent "true" and "false". This renders some option inputs for those values. The main purpose to use this type over type="select" is that the value is parsed as a boolean value on the server side.

To simplify usage of this type there should be a new mode where type="boolean" is used without options. In that mode it should simply render a single checkbox where checked equals "true" and unchecked equals "false"...
Bugfix: Attribute changeaction not functional on tml:input type="boolean"
The attribute changeaction is not functional on tml:input type="boolean"
Bugfix: Wrong HSQL default root
WGA since 4.1.4 sets the HSQL default root system variable "de.innovationgate.wga.hsql.root" automatically, but wrong since it sets it to the complete file path of the config file "wga.xml" and not to the path of the configuration folder.
Bugfix: Encoding conversion error in codefiles leads to cancellation of design sync process
When a design code file cannot be synced, for example bc. of encoding conversion errors, the whole current synchronisation process is canceled.

An example exception of this case from Websphere 6.1:

sun.io.MalformedInputException
at sun.io.ByteToCharUTF8.convert(ByteToCharUTF8.java:278)
at sun.nio.cs.StreamDecoder$ConverterSD.convertInto(StreamDecoder.java:314)
at sun.nio.cs.StreamDecoder$ConverterSD.implRead(StreamDecoder.java:364)
at sun.nio.cs.StreamDecoder...
Bugfix: Remote Log Server not closed on WGA shutdown/restart
The old log server remains open and tries to continue serving the log. However since it has no up-to-date information about active logfiles it fails to do so, claiming that it cannot find a logfile.
Bugfix: WGA Content Store for HSQL does not close Connection Pool/JMX
When a database of the described type is closed it does not close the underlying connection pool to the HSQL database.

Also the JMX metrics of the pool are not removed from the JMX server.
Bugfix: Check for valid parent content types for new document fails bc. of wrong casing
On some systems it is possible to specify the valid parent content types of a content type manually, for example via Lotus Notes. The content type names given here may have a differing case than the actual content type names that normally are completely lowercased.

The check for equality of these parent content type is currently case-sensitive. So A wrongly cased name leads to this content type not being available under that parent type.
Bugfix: WebTML cache is generated for browser interface sessions
Sessions in Browser Interface (or Content Manager) show some documents that are invisible in normal browsing, like draft documents.

When a WebTML cache is generated while BI is active, this cache is centrally stored and also visible for people not in BI.

Therefor WebTML Cache generation should generally disabled in browser interface.
Bugfix: Unable to disable WGA3 Browser Interface without Content Manager
In WGA 4.0.8, WGA Manager Tab "Configuration", Entry "Feature Activation" the meaning of the feature "WGA3 Browser Interface" was changed to "Authoring Applications", which would deactivate all authoring applications on a server, including BI, Content Manager and Wiki.

A customer now want's to disable the BI only to let his authors use the Content Manager exclusively and is unable to do so.

As there are other ways to disable Authoring Applications at whole (like restricting them to a nonexis..
Bugfix: Obsolete IBM binding files cause trouble on Websphere
Since the beginning of WGA we have some binding files in WEB-INF special for IBM and their Websphere Application Server. They were put there by default by the IDE used back then which was IBM Websphere Application Developer:

ibm-web-bnd.xmi
ibm-web-ext.xmi

On newer Websphere Servers, for example certain versions of WAS 6.1, these binding files prevented the application from being installed.

Since they are not mandatory for applications to be installed on WAS, and we do not want to have spec..
Bugfix: Cache for nonexistent documents unfunctional
Bugfix B000058B6 introduced a behaviour where the WGAPI cache for nonexistent documents is not effective any more.

In that fix the method getDocumentByDocumentKeyFromCache() was rewritten to never throw a WGDocumentDoesNotExistException, which was thrown at positions where the exception was not catched.

However at some other usages of this method it was essential that this exception can be thrown, for example at WGDatabase.getDocumentByKey() which by this way determines that a document is ca..
Bugfix: Truncate client string in profile
Browser client string ("User Agent") get excessive long with current versions of Internet Explorer Browsers:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; Mozilla/4.0 (compatible; MSIE 7.0; Win32; 1&1); .NET CLR 1.0.3705; InfoPath.1; OfficeLiveConnector.1.3; OfficeLivePatch.1.3; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NE..

This collides with the accesslog column "client" and it's length.

We should look if we can manually truncate the content put to th..
Bugfix: Query Test Page, Field "Display Field Data" does not recognize item names beginning with "_"
It is common usage for some WGA Content Stores to prefix item names with an underscore, for example in Lotus Domino where this differentiates them from "metadata items".

The Field "Display field data" used to put out custom field information on the results of the query test does not recognize item names beginning with "_". Instead it thinks these are metadata names.
Bugfix: Domino: Document recyclings at session release are synchronized
At the release of a domino session it's used domino objects are recycled to release backend resources. This might be a long process depending on number of objects and - more important - performance/load of the domino server.

Currently this procedure takes place in a method which is synchronized against the DominoSession object.

While a synchronisation is on that objects other threads, which try to allocate a new session, have a chance to test this session and get blocked by its active synchr..