Access Keys:
Skip to content (Access Key - 0)









Rhino 2.3.1 Prod changelog

Print this page
 Rhino Changelog
=================

Changes between 2.3.1.34 and 2.3.1.35
=====================================

    * Fixed an activity end race condition in the activity handler that could
      lead to the pessimistic or replicated lock for an activity not being
      released when the enclosing transaction ends. (RHI-4983)

Changes between 2.3.1.32 and 2.3.1.34
=====================================

    * Fixed bug in activity attachment mapping that caused various failures
      including event delivery spinning on activity-end cleanup. (RHI-5097)

    * Fixed an exception that occurred when updating the environment entries of
      an SBB which performed a JNDI lookup of a resource adaptor entity link
      binding in setSbbContext() when a service that this SBB participated in
      was not active. (RHI-3012)


Changes between 2.3.1.31 and 2.3.1.32
=====================================

    * Fixed an ordering issue that could cause a node to associate resource
      adaptor entity bindings with the wrong SBBs during service activation.
      (RHI-3775)

    * If a deployed component registers a shutdown hook, and that hook does not
      return when Rhino tries to shutdown using System.exit(), Rhino will forcibly
      halt the VM using Runtime.halt() after a timeout.  The timeout has a default
      value of 60000ms and can be overridden by setting the "rhino.halttimeout"
      system property. (RHI-3772)

    * Enable tab completion of profile name arguments for removeprofile management
      command. (RHI-3766)

    * Disable MemDB striping by default by setting stripe count to 1. (RHI-3761)

Changes between 2.3.1.30 and 2.3.1.31
=====================================

   * Fixed an issue which could disrupt message delivery after the 2,147,483,647th
     message on a Savanna group, leading to a group heartbeat failure and node 
     restart. (RHI-3758)

Changes between 2.3.1.29 and 2.3.1.30
=====================================

   * Removed unsupported JVM warning message for Java 8 update 60 and later.
     Java 8 update 60 is a certified JVM for Rhino 2.3.1. (RHI-3746)

   * Fix XML Parsing error in META-INF/oc-service-license.xml due to illegal
     DTD attribute definition in oc-service-license-xml_1_1.dtd. (RHI-3515)

   * Fixed corruption of active service resource adaptor entity link bindings
     when copying and deleting per-node activation state. (RHI-3721)

Changes between 2.3.1.26 and 2.3.1.29
=====================================

   * Profile spec components that reference other profile spec components for
     their dependent classes will now install correctly. (RHI-3702)

   * A Rhino node that is shut down in a controlled manner will now also wait
     for all outstanding SNMP configuration changes to be persisted before
     terminating. (RHI-3630)

   * License accounting can now be disabled entirely for components signed by
     OpenCloud. (RHI-3499)

Changes between 2.3.1.25 and 2.3.1.26
=====================================

    * A node previously in the Running state no longer has the opportunity to
      forget this and restart in the Stopped state if the node fails to bootup
      and initialise properly during a restart. An alarm will now be raised if
      an exception occurs while attempting to transition the node to the Running
      state during bootup (ie. as a result of the -s argument or previous
      Running state). (RHI-3617)

    * Fixed double counting of events fired by an SBB as accepted in event
      statistics. (RHI-3620)

    * Fixed a potential deadlock in the resource adaptor Cluster State Change
      Facility when multiple cluster nodes are restarted at the same time.
      (RHI-3629)

Changes between 2.3.1.24 and 2.3.1.25
=====================================

    * Fixed a ConcurrencyFailure where startActivitySuspended and SBB attaching
      does not acquire isolation lock. (RHI-3579)

    * Fixed ClassNotFoundException thrown in the the stop-rhino.sh script if
      Rhino cannot be shut down due to a timeout waiting for memdb updates to be
      written back to the external database. (RHI-3572)

Changes between 2.3.1.23 and 2.3.1.24
=====================================

    * Fixed a memory leak which could occur in certain failure scenarios
      involving transaction time outs. (RHI-3557)

Changes between 2.3.1.20 and 2.3.1.23
=====================================

    * Fixed a slow memory leak which could occur in the case of frequent partial
      commits, e.g. where one of multiple database connections was consistently
      failing. (RHI-3543)

    * Treat profile-spec-ref as dependency when exporting profile tables.
      (RHI-3507)

    * Fixed an NPE that could occur attempting to subscribe to or unsubscribe
      from monitoring of a stats parameter set that only exists on a subset of
      Rhino nodes. In the unsubscribe case the NPE could cause nodes to shutdown
      and restart. (RHI-3518)

    * Profile imports will now complete successfully if a client decides to use
      a Rhino client jar from an early 2.3.0.x or 2.3.1.x release. (RHI-3454)

    * Fixed javac task error when using Ant bundled with Rhino. (RHI-3479)

    * Fixed an infinite event router loop that occurred during the activity
      cleanup phase of activity end processing if an SBB that claimed to be
      attached to the activity didn't actually exist. (RHI-3508)

    * A state cleanup of local memdb instances will now be initiated when
      services are uninstalled or profile tables are removed.  This frees up any
      heap consumed by these artifacts immediately, rather than waiting until
      the next cleanup triggered by database state churn. (RHI-3526)

Changes between 2.3.1.19 and 2.3.1.20
=====================================

    * Provide earlier feedback of state exchange failures, for example if no
      address is available for listening. (RHI-3141)

    * Fixed an issue where serialization errors during database writes would
      raise an exception and an alarm and reset the connection instead of
      simply retrying the commit. (RHI-3346)

    * Fixed a classpath issue with the bundled Ant start script which caused
      RMI classloading issues with dynamically defined tasks using custom
      classes over a Rhino remote connection. (RHI-3455)

    * Fixed a race condition in the rate limiter in which work could be
      unnecessarily rejected. (RHI-3465)

Changes between 2.3.1.18 and 2.3.1.19
=====================================

    * In MemDB, exit the JVM as soon as an underlying Savanna group leaves the
      primary component. This fixes an edge case affecting clusters in which a
      subset of Savanna groups go non-primary, leaving a node only partially
      stopped and unable to release database resources and locks. (RHI-3268)

Changes between 2.3.1.16 and 2.3.1.18
=====================================

    * Fixed a NullPointerException that could occur in exceptional circumstances
      when initialising a replicated activity handler with cluster state during
      node startup, ultimately causing the node startup to fail. (RHI-3339)

    * Fixed a race condition which could cause failures in getting a JDBC
      connection to an external database in some connection pool configurations
      (RHI-3353)

    * Fixed a problem rolling back transactions when more than one JDBC datasource
      is enlisted. (RHI-3356)

    * Fixed an infinite event router loop that occurred if an SBB failure occurred
      during the activity cleanup phase of activity end processing. (RHI-3183)

    * Fixed an exception that could occur detaching an SBB from an activity during
      activity end processing if the SBB state for some reason did not agree with
      the activity state. (RHI-3183)

    * Added watchdog.oom_gc_enabled option that runs an explicit GC when the over
      memory use limit condition is reached. Default is to try to detect if this
      behaviour is required (-XX:DisableExplicitGC absent and a G1 collector
      present = System.GC() at over limit, otherwise don't System.GC). (RHI-3374)

    * Increased default heap size for quorum nodes, current size could cause
      continuous CMS collections on Java 7. (RHI-3257)

    * Rhino will no longer perform an activityUnreferenced() callback to a resource
      adaptor that requested it for an activity that is unreferenced but is already
      ending. (RHI-3247)

    * Rhino's periodic activity liveness scanner now checks if an idle activity is
      unreferenced and performs the appropriate callback to the owning resource
      adaptor if requested. One result of this is that unreferenced null activities,
      orphaned due to conditions such as overload, will now be noticed by the scanner
      and cleaned up appropriately. (RHI-3248)


Changes between 2.3.1.14 and 2.3.1.16
=====================================

Bugfixes

    * Exporter fix:, SBB dependencies on resource adaptor entity link name bindings
      are now correctly associated with service activation (a'la SLEE 1.1) rather
      than SBB deployable unit installation (a'la SLEE 1.0). (RHI-3325)
    * An SBB may now successfully invoke suspendDelivery() and resumeDelivery()
      on a given event context in a single transaction as much as they like.
      Furthermore, isSuspended() will now return the correct transactional
      state. (RHI-2374)
    * Removing per-node activation state containing active services will no longer
      leave dangling references to resource adaptor entity link name bindings. (RHI-3328)
    * A profile may now successfully invoke ProfileContext.getProfileName() to
      obtain its identity during profileActivate(). (RHI-2793)
    * Fixed export of certain profile attribute types. This change is backwards
      compatible with exports produced by previous Rhino versions except for the
      special treatment of the "\u" character sequence now introduced.  When
      using an export produced by a previous version of Rhino, any "\u" character
      sequence encased in a CDATA block should be changed to "\\u" otherwise
      Rhino will attempt to parse the characters following it as a unicode value.
      (RHI-3179)
    * The event router will no longer stall processing events for an activity if
      an exception such as lock timeout occurs while trying to obtain the
      transactional state for the activity. (RHI-3236)
    * Root SBBs that detach and remove themselves will no longer cause the event
      router to fail and roll back the transaction after event delivery.
      (RHI-3287)
    * Fixed incorrect SNMP OIDs for tables representing Rhino statistics. Updated
      associated MIB export
      logic to reflect the corrected table format.
      The old OID structure for statistics was:
         1.3.6.1.4.1.19808.rhino(2).statistics(1).<parameter_set>.table(2).<column>.<index>
      The corrected OID structure for statistics is:
         1.3.6.1.4.1.19808.rhino(2).statistics(1).<parameter_set>.table(2).entry(1).<column>.<index>
      The entry OID was previously missing. Any tooling which relied upon the old
      OIDs will need to be updated to include the extra '.1' for the entry object.
      (RHI-3303)
    * Fixed a slow memory leak which could occur when repeatedly connecting from a
      stats client at a high rate over a long period of time. (RHI-3313)
    * Fixed alarm entries incorrectly logging to all appenders on log file rollover
      instead of just the "AlarmsLog" appender. (RHI-3314)
    * Sample statistics will now be correctly reported to existing stats sessions
      if a monitored stats parameter set is removed and later recreated. (RHI-3320)
    * Profile queries no longer require a db lock on the default profile, removing
      a potential point of resource contention when using a pessimistically locked
      profile table in an application. (RHI-3273)
    * Added a new profile specification option, via the extension deployment
      descriptor, that allows the SLEE-defined copy of profile CMP field values
      from the default profile when a new profile is created to be disabled.
      Disabling this copy can remove a point of lock contention in applications
      that use pessimistically locked profiles to store or share session state.
      (RHI-3274)
    * Added "getdescriptor" command to rhino-console, which displays the SLEE
      descriptor for a component including the outgoing and incoming references.
      (RHI-3306)
    * Ensure that the committed view of attached SBB entities is ordered. This
      fixes a deadlock scenario involving:
        a) more than one replicated SBB attached to a replicated activity
        b) multiple cluster nodes simultaneously delivering an event on the
           replicated activity. (RHI-3280)
    * Rhino startup options can now be overridden by putting them in a file
      named "options" in the config directory. (RHI-3084)
    * Fixed a bug that meant the audit statistics for a node joining an
      existing cluster were incorrectly calculated during the first
      monitoring period. This could result in an OverLicensedCapacity
      alarm being incorrectly raised for the duration of the next
      monitoring period.
      (RHI-3336)

Changes between 2.3.1.12 and 2.3.1.14
=====================================

Bugfixes

    * Follow-up to fix for RHI-3198, to prevent a spurious "over licensed
      capacity" alarm being raised and audit log record being written when
      a new node joins a running cluster. (RHI-3264)

    * Fixed a bug in which competing transactions could fail to initialise a
      set of statistics (a parameter set), resulting in an exception when
      the parameter set was used. (RHI-3263)

    * If the JMX Remote Adaptor m-let cannot bind to its configured ports at
      startup, it will now retry indefinitely until it succeeds. This prevents
      the situation where no cluster nodes are listening for management
      connections. (RHI-3260)

    * Fixed a number of bugs that could leave a database connection error
      alarm raised after the connection to the backing store for the in-memory
      database was re-established.  (RHI-3255, RHI-3258, RHI-3262)

    * The timeout specified for the shutdown command will now be used correctly
      when handling backing database persistence during Rhino node shutdown.
      (RHI-3256)

    * Fixed a bug related to RHI-3226, that also caused Rhino to repeatedly
      resynchronise the backing store for the in-memory database. The problem
      occurred if multiple persistent databases were configured and one of
      the databases failed and recovered at the same time as the Rhino node
      assigned to handling the database connections failed and recovered.
      (RHI-3253)

Changes between 2.3.1.9 and 2.3.1.12
====================================

Improvements

    * Added support for administrative console command getsbbdiagnostics, for
      use when debugging SBBs in an unrecoverable state. (RHI-3170)

Bugfixes

    * Fixed a bug that caused Rhino to repeatedly resynchronise the backing
      store for the in-memory database. This could occur while importing large
      numbers of profiles or restoring management state after a node rejoined
      the cluster. (RHI-3226)

    * Fixed a bug that caused service counter statistics to be under-reported
      if a large amount of incoming traffic was being received during Rhino
      start-up. (RHI-3198)

    * Management clients, such as REM, which probe Rhino for the activation
      state of services, resource adaptor entities, and the SLEE itself, will
      no longer risk deadlocking in memdb during node restarts (or any other
      time). (RHI-3221)

    * Rhino will now log a warning message at startup if it detects that any
      memory pool is configured with different initial and maximum capacities.
      This is to warn the administrator of the risk of a full GC when the JVM
      resizes the permanent generation memory pool. (RHI-3203)

    * If the Rhino start script is in "keep-alive" mode (-k switch) then the
      delay before restarting Rhino is now a random value between 30 and 75
      seconds. (RHI-3172).

Changes between 2.3.1.7 and 2.3.1.9
===================================

Improvements

    * The system property acnaming.no_replicated_lookup can be set to true to
      stop the AC naming facility from performing a lookup in replicated state
      when no local binding is found for a name. (RHI-3192)

Bugfixes

    * A cluster-wide management operation that in turn performs another
      cluster-wide management operation will no longer deadlock. (RHI-3190)

    * MBean write operations are now blocked for a shorter duration during
      Rhino startup. This allows Resource Adaptors to safely perform more
      management operations from within the raActive() method. Note that
      management operations requiring the cluster wide management lock (e.g.
      start/stop operations) will still block if invoked directly from the
      raActive() callback of a Resource Adaptor during Rhino boot. (RHI-3195)

Changes between 2.3.1.3 and 2.3.1.7
===================================

Improvements

    * Added support for a new staging queue type, "transfer", that performs
      better under high load on systems with many processors. (RHI-3076)

    * Rhino's Activity Handler garbage collector is now multi-threaded
      to increase scalability and performance at high session rates.
      This update adds two tuning parameters:
          - The system property rhino.ah.gcthreads sets the level of
            parallelism for AH GC (default=2 threads).
          - The system property  rhino.ah.gcchurn sets the GC initiation
            threshold (default=5000 activity generations created). (RHI-3094)

    * Rhino now does runtime compilation in-process, greatly improving
      deployment times for large projects. If required, the old behaviour where
      Rhino would fork an external javac instance can be restored by
      uncommenting the line containing "-Dcom.opencloud.javac.external" in
      read-config-variables (Rhino) or jvm_args (Rhino SDK). (RHI-3103)

    * Added 'CascadeUninstall' ant task which behaves in a similar manner to the
      cascade-uninstall script. This task can be used to uninstall a DU and all
      DUs, resource adaptors, profiles and services that depend on it.
      (RHI-1615)

Bugfixes

    * Fixed an issue which could cause a NullPointerException after removing a
      profile table which had been using the pessimistic lock
      strategy. (RHI-3001)

    * Fixed the Java VM check at Rhino start so that certain supported JVMs are
      no longer reported as unsupported. (RHI-3023)

    * Fixed a problem that could cause slow responses from the management
      database to trigger a Savanna heartbeat failure and node shutdown.
      (RHI-3028)

    * Fixed an issue where a node could exit unexpectedly when rejoining a
      cluster after encountering an IllegalArgumentException related to an
      out-of-order message append. (RHI-3029)

    * Fixed an issue in which a node could exit unexpectedly with an
      AssertionError when starting multiple nodes concurrently (RHI-3031)

    * Configurations where the Address Pool Start is lexically higher than the
      Address Pool End when using a custom Savanna configuration are now handled
      correctly (RHI-3032)

    * Fixed a ClassCastException that prohibited a deactivating service from
      reaching the Inactive state if debug logging was enabled for the
      rhino.state.service.deactivation log key. (RHI-3033)

    * The SNMP agent will now rebind on restart in the case where it was not
      released correctly on shutdown. (RHI-3070)

    * Defined missing operation codes for audit logging of SNMP management
      operations (RHI-3078)

    * Fixed a race condition that could cause the object ready pool to get
      stuck at maximum size with 100% misses. (RHI-3086)

    * Reduced default timer resolution from 250ms to 10ms, so timers fire much
      closer to their scheduled time. (RHI-3132)

    * Fixed issue preventing replicated activities from ending, when attached
      to a non-replicated SBB from a failed node. (RHI-3147)

    * Fixed an issue affecting Rhino 2.3.1, where node failure could cause other
      nodes in the cluster to quit unexpectedly. (RHI-3163)

Changes between 2.3.1.1 and 2.3.1.3
===================================

Improvements

    * Rhino will now automatically provide profile import/export codecs for
      profile CMP fields of enum types (or arrays of enum types). (RHI-3015)

    * Added a rhino-console command and Ant task to unset, all at once, the
      trace level assigned to any non-root tracers of a notification source.
      (RHI-3079)

    * Added a 'pruned' counter to object pool stats that counts objects that
      were dropped from the LRU queue. (RHI-3089)

Bugfixes

    * Fixed a problem where if a threshold rule referred to a non-existent
      statistic, rule processing would no longer run and connections from
      rhino-stats would fail. (RHI-2925)

    * Fixed compilation errors in generated code if the type of a profile CMP
      field was an array of an inner class. (RHI-3016)

    * Fixed Object Pools parameter set names to remove an extraneous
      trailing 'O'. (RHI-3088)

    * Fix a problem that occurred when timer events were re-fired (under
      overload conditions). They are now more reliable and avoid certain scenarios
      which caused an exception to be thrown. (RHI-3108)

    * Fixed an issue affecting Rhino 2.3.1, where restarting a node could
      cause other nodes in the cluster to quit unexpectedly. (RHI-3019)

Changes between 2.3.0.1 and 2.3.1.1
===================================

New features and improvements

    * Rhino's in memory database (MemDB) now supports data striping, helping
      to increase scalability for configurations using replication.

      See the Rhino Configuration section of the Rhino Administration and
      Deployment Guide for details on how to configure MemDB data striping.

      Statistics related to MemDB, including lock manager statistics, can now
      be viewed per-stripe, or aggregated across all stripes. New statistics
      related to MemDB timestamp management have also been added under the
      "MemDB-Timestamp" parameter set. (RHI-2607)

    * The Activity Handler now uses a Migrating Lock Manager instead of a
      Biased Distributed Lock Manager.

      Lock Manager statistics are now aligned between MemDB and the
      Activity Handler, within the "LockManagers" parameter set. (RHI-2936)

    * Rhino is now certified to run on Red Hat Enterprise Linux Server release
      6.2 (Santiago) virtualised machines. (RHI-2941)

    * The SLEE Timer Facility has been reimplemented to use a hierarchical
      timing wheel rather than a binary heap. Cancelled timers now become
      immediately eligible for garbage collection, rather than waiting until
      they expire as they previously did. A new Rhino stats parameter set has been
      added which records Timer Facility stats. Configuration options have
      been added to rhino-config.xml which allow the Timer Facility to be tuned
      based on application needs. (RHI-2259)


Bugfixes

    * Fixed a race condition that could cause ActivityContextNamingFacility
      lookups to return uncommitted activity state. (RHI-2058)

    * Fixed a problem that meant timers and activities would never be cleaned
      up when timer events were dropped during overload conditions. (RHI-2919)

    * Fixed a deployment time compilation error for SBBs with a CMP field type
      that is a subclass of ProfileLocalObject. (RHI-2468)

    * Fixed an issued where the New TimerLoop code could calculate an incorrect
      'timerError', which in turn caused TimeqrFacilityImpl.getResolution() to
      return an incorrect value. (RHI-2921)

    * Fixed an issue with rhino-export that caused an null pointer exception
      when the security-permissions element was missing from the deployment
      descriptor (RHI-2935)

    * An unexpected runtime exception thrown by an initial event selector
      method will no longer permanently halt event delivery on the affected
      activity. (RHI-2590)

    * Fixed a bug which prevented some debug logging from MemDB from being
      written to logs. (RHI-2970)

    * Fixed a slow memory leak which could occur when repeatedly connecting
      from a stats client at a high rate over a long period of time. (RHI-3313)

Changes between 2.2.0.7 and 2.3.0.1
===================================

New features and improvements

    * Rhino 2.3 now provides horizontal scalability through replicated static
      domain configuration. (RHI-2615)

    * Added SNMP v3 support to SNMP subsystem. Note that SNMP v3 is disabled by
      default, and that authentication details are shared between stats
      collection and notification delivery for v3.

    * Added support for modification of the community string for use with
      v1/v2c. See the 'setsnmpcommunity' command in the console.

    * Added support for enabling/disabling of SNMP versions individually. See
      the 'enablesnmpversion' and 'disablesnmpversion' commands in the console.

    * Added support for multiple SNMP notification targets. See the
      'addsnmptarget' and 'removesnmptarget' console commands. (RHI-2580)

    * SNMP notifications can now be filtered by notification type. See the
      'setsnmpnotificationenabled' console command. (RHI-2657)

    * The Rhino 2.3 Licensing of RA and SBB components been extended to be more
      flexible with customer service accounting practices and unique
      implementations. Licenses may now include one or more Certificates linked
      with specific functions. (RHI-2571)

    * The security policies associated with deployed components (e.g. Resource
      Adaptors) can now be configured at runtime. See the 'getsecuritypolicy'
      and 'setsecuritypolicy' console commands.
      The security policy in use by Rhino JVM can now also be queried at
      runtime. See the 'getrhinopolicy' console command. This command is
      intended for diagnostic purposes only. (RHI-2593)

    * SBB and Profile Specification env entries can now be configured at
      runtime. See the 'setenventries' and 'getenventries' console commands.
      (RHI-2592)

    * Allow processing of ActivityEndEvent to "bounce" between SLEE nodes as
      many times as necessary, in the case of a mix of replicated and
      non-replicated SBB Entities attached to a replicated Activity Context.
      (RHI-2514)

    * Added a lock facility, which resource adaptors can use to obtain
      transaction-based distributed locks. (RHI-2669)

    * Added a new console command "alarmcatalog" that displays the alarms that
      can potentially be raised by Rhino and the deployed components that have
      registered their alarms. (RHI-2680)

    * Replicated pessimistic memdb storage now uses a new lock manager that
      improves latency when locks tend to be acquired on one node only (e.g.
      when traffic is "sticky" to a single node). Mutual exclusion is still
      provided between nodes, but acquiring a lock that was previously held by
      a different node will have higher latency than in earlier versions. The
      pre-2.3 lock manager is still available for cases where locks are usually
      acquired on many nodes. Services, SBBs, and RAs can configure the type of
      locking used via <lock-strategy> elements in extension deployment
      descriptors, in addition to other storage/locking options. (RHI-2595)

    * Savanna configuration file format changed to be simpler, less
      error-prone, and easier to share between nodes. (RHI-44)

    * Extended the resource adaptor message passing facility with functionality
      that allows resource adaptors to make request-response type invocations
      to the same resource adaptor entity on other nodes. (RHI-2670)

Bugfixes

    * rhino-console commands that require or accept a notification source
      parameter as an argument now allow an abbreviated form of input if the
      notification source only has one attribute, ie. this change only affects
      the input of notification sources for resource adaptor entities, profile
      tables, and subsytems. As an example, whereby previously a command such
      as "listactivealarms resourceadaptorentity entity=cgin" was used, it is
      now also possible to invoke the same command as "listactivealarms
      resourceadaptorentity cgin", ie. the "entity=" part of the notification
      source value is no longer necessary. Note that the old form still remains
      valid input. (RHI-1719)

    * Amend rhino.policy so JMX clients can remove notification listeners.
      (RHI-1837)

    * Changes to staging queue type or maximum size are now applied
      immediately, rather than on the next restart. (RHI-1872)

    * Fixed the order in which profile specifications are uninstalled in the
      case where there are dependencies within a deployable jar. (RHI-2077)

    * Fixed bug in cascade-uninstaller tool where it would sometimes omit some
      component dependencies resulting in an incorrect uninstall order.
      (RHI-2144)

    * Implementations of profileStore() that modify indexed profile attributes
      no longer cause a ConcurrentModificationException on transaction commit.
      (RHI-2201)

    * Fixed an infrequent ArrayIndexOutOfBoundsException in internal timing
      code. (RHI-2395)

    * Increased default maximum permanent generation size to 192mb. (RHI-2407)

    * Improved exceptions thrown to a management client (including Ant) when an
      internal exception is thrown. (RHI-2534)

    * Spurious glibc version warnings no longer occur on recent Linux versions.
      (RHI-2581)

    * Rhino now includes an updated PostgreSQL JDBC driver (version 9.1-901).
      (RHI-2619)

    * Fixed SNMP 'exportmibs' console command not handling parameter set type
      names which contained path separator characters. (RHI-2622)

    * Fixed a bug that caused the last property specified in the
      config/jvm_args configuration file to be ignored. (RHI-2623)

    * Fixed bug preventing concurrent deployment of components using the same
      root parameter set name (e.g. CGIN 1.3.5 + 1.4.1). (RHI-2629)

    * Deployable units larger than 16MB are now supported when using Derby.
      (RHI-2632)

    * Restored missing rate limiter API classes in rhino-ra.jar. (RHI-2640)

    * Several fixes for SNMP address binding during node start. Additional
      debugging also added at debug level. (RHI-2649)

    * Strings of longer than 64k characters are now correctly handled in CMP
      fields and other contexts where they are persisted. (RHI-2661)

    * Manages JMX notification listeners more carefully: warn about slow
      listeners or listeners that throw exceptions. (RHI-2686)

    * Fixed tab completion in rhino-console in the case where tab completion
      results are based on a previous argument and that previous argument was
      quoted or contained escape characters. (RHI-2691)

    * Resuming a SleeTransaction from a resource adaptor using the
      SleeTransactionManager now works correctly rather than throwing an
      InvalidTransactionException. (RHI-2696)

    * Fix a lock manager statistics error where lock acquire/release/wait
      counts would be double-counted for each node in a cluster. (RHI-2698)

    * Fixed a lock manager statistics error that would incorrectly skew the
      lock acquire and lock wait time distributions. (RHI-2699)

    * Fixed a potential memory leak during lock acquisition if interrupted by
      an administrative transaction rollback. (RHI-2701)

    * Rhino now starts successfully if a SBB constructor throws an unchecked
      exception while filling service object pools. (RHI-2705)

    * Errors while accessing a Derby database for memdb persistence will now
      correctly rollback the transaction before closing the connection,
      avoiding subsequent database lock timeouts due to Derby not releasing
      locks on connection close. (RHI-2706)

    * Fixed a Savanna flow-control issue that could cause very slow deployments
      in a clustered environment if non-default group heartbeat settings were
      used. (RHI-2711)

    * Fixed a race condition whereby attempting to access the Profile MBean for
      the default profile immediately after creating a profile table might
      sometimes fail. (RHI-2712)

    * Handle logging misconfigurations more gracefully. (RHI-2713)

    * Fixed an issue where a component jar containing 2 or more components
      would fail to deploy if the component jar used the manifest Class-Path
      attribute. (RHI-2762)

    * Fixed bug in resource adaptor entity creation that, for relevant
      services, caused one serviceActive()/serviceStopping() callback to be
      made per resource adaptor type implemented by the resource adaptor,
      rather than once only. (RHI-2766)

    * Linux kernels in the 3.x series are no longer considered "unsupported" by
      the rhino-install.sh script. (RHI-2767)

    * Console command line completion will no longer return profile attribute
      names as suggested attribute values when creating or updating a profile.
      (RHI-2770)

    * Fixed a "zip file closed" warning error that occurred sometimes when
      uninstalling a deployable unit. (RHI-2792)

    * The default management auditing level is now "writes", which records only
      write operations (operations that modify Rhino state).
      To also audit read operations, set the auditing level to "all" via
      rhino-console. (RHI-2798)

    * Fixed exception handling in the createCommittedProfile method in
      RemoteProfiles (part of the Rhino Remote API) so that an uncommitted
      profile won't be left dangling if certain exceptions are thrown during
      the profile create. (RHI-2810)

    * Management clients performing 'write' operations via Rhino's MBean
      interface will now block until the end of the Rhino boot process.
      (RHI-2824)

    * Fixed JNDI Context implementation of list() and listBindings(). Names
      bound into subcontexts, and the name of the context being listed, are no
      longer included in the return result. (RHI-2833)

    * The <importconfiguration> Ant task (used in generated exports) now
      reports any errors encountered as fatal build exceptions, not as
      non-fatal build exceptions. (RHI-2843)

    * Fixed mishandling of the NEW_SIZE and MAX_NEW_SIZE variables when saving
      installation options with rhino-install.sh -d <properties-file>.
      (RHI-2846)

    * When using the rhino-remote helper classes:
      - mbean proxies now throw the underlying, unwrapped, exception whereever
        possible; when an exception is thrown that can't be directly thrown by
        the proxy (e.g. an I/O exception not declared by the mbean method) it
        is wrapped in either ManagementException (where possible) or
        RuntimeException. This avoids unexpected UndeclaredThrowableExceptions.
      - Exceptions thrown by Rhino-specific mbeans (i.e. those Rhino mbeans
        that are not in the standard SLEE domain) are now made remote-safe and
        should not produce unexpected ClassNotFoundExceptions if they contain a
        nested exception that is internal to Rhino. (RHI-2864)

    * A more useful error is reported by init-management-db if deletion of the
      existing Derby database fails. (RHI-2865)

    * Fixed a container bug that could cause index corruption if an OCBB object
      instance was modified in a transaction that rolled back then later reused
      in a transaction where the associated entity was removed from the
      database. (RHI-2893)

    * Alarms raised by a component will now be cleared during component removal
      for profile tables, RA entities, and services. (RHI-2066)

    * Clusters will now refuse to form when individual nodes are running
      different versions of Rhino. (RHI-2169)

    * Added command-line completors for resource adaptor config properties when
      creating or updating resource adaptor entities. (RHI-2521)

    * The "SystemInfo" stats parameter set has been removed; all data it
      provided is available in a more detailed form via the "JVM" parameter
      set. (RHI-2533)

    * The legacy web console has been removed from Rhino - to manage Rhino via
      a web interface, use REM instead. (RHI-2651)

    * Fixed a concurrency issue in the distributed lock manager algorithm which
      could cause a node to fail if a lock was changing state while lock state
      was being extracted for propagation to another booting node. (RHI-2742)

    * Improved error handling when the creating of a custom logging appenders
      throws an error. This prevents a potential issue where a faulty appender
      could prevent a Rhino node from starting. (RHI-2559)

    * Isolated some third party libraries (including Google Collections) from
      the class loader exposed to resource adaptors and services. (RHI-2501)

Changes between 2.2.0.5 and 2.2.0.7
===================================
    * Added 'setAlarmLogPeriod' and 'getAlarmLogPeriod' console commands (for changing the
      periodic active alarm log message interval). Setting the period to '0' will disable periodic
      active alarm notifications. (RHI-2621)
    * Removed erroneous semicolon from ProfileImportExportBuilder.template when generating
      CodecFactory interface. (RHI-2620)
    * Fixed an issue with default profiles of non-replicated profile tables not being created
      on all nodes. (RHI-2606)
    * Fixed clustered node restart issue, whereby the cluster could crash if restart occurred
      too quickly during cluster reformation. (RHI-2605)
    * Object pools 'initialPooledPoolSize' may now be configured in rhino-console with size 0.
      Previously the minimum allowed size was 1. (RHI-2602)
    * Fixed verifier of tracer names in various TraceMBean methods that was allowing some invalid
      names to be passed as valid. (RHI-2600)
    * Added an option to specify a timeout to the shutdown command. Outstanding in-memory database
      state that needs to be flushed to persistent storage must be flushed within this timeout
      period otherwise the shutdown will be aborted. If a timeout is not specified, a default timeout
      is used, which can be configured in rhino-config.xml. The initial default timeout is 60s. (RHI-2585)
    * Fixed data loss bug in console logging tool. All output lines should now be logged. (RHI-2584)
    * Changes to the rhino-stats tool:
      When rhino-stats is connected to a node and that node is restarted, then rhino-stats now
      reconnects to that node automatically after it has been rebooted. rhino-stats now has a failover
      mechanism similar to the one for the console (for example, if the tool can't connect to the
      default node, it now tries to automatically connect to the other nodes in the
      rhino.remote.serverlist property) (RHI-2510)
    * Fixed a synchronisation issue in Rhino's custom classloader implementation which could cause a
      LinkageError if multiple threads simultaneously attempted to load the same class. (RHI-2192)
    * Fixed a deadlock that could occur during cluster state change when using resource adaptors that
      make use of Rhino's Cluster State Change Facility. (RHI-2151)
    * Fixed export of SLEE 1.1 profile tables so that profile attributes that export to a string
      containing '<', '>', or '&' characters are wrapped in a CDATA section, allowing the exported
      profile data to be reimported again without issue. (RHI-1966)

Changes between 2.2.0.3 and 2.2.0.5
===================================
    * Fixed management tools not allowing creation of Address profiles with an 'undefined' AddressPlan.
    * Fixed an issue with DynamicPolicy should treat jar:URL!/ as equivalent to just URL when
      canonicalizing cod[e]bases
    * Fixes for non-display of values in the stats client for parameter sets which contained no
      sample values when talking to a multi-node cluster.
    * Changed default min bytes per node to 2k to fix a stats distribution config problem.
    * Added new OC RA DTD to support 'oid' attribute in <stats-parameter-set-type>.
    * Made hostname checking more lenient. The domain portion of a hostname should now be ignored.
    * Increase FC_min_bytes_per_node so that it's at least packet_length.
    * Added warning logged on Rhino startup if a file with a filename of 255 characters cannot be
      created in the deployments directory.
    * Make sure cleanup tasks run without holding the cleanup lock.

Changes between 2.2.0.2 and 2.2.0.3
===================================
    * Fixes for stop-rhino.sh argument handling. When running on the same host,
      the script will now also wait for rhino.pid to be removed before returning.
    * Fixed handling of multiple stats subscriptions for the same parameter-set and statistic-id
      within the same stats session.
      Caveat: with respect to live upgrades, this change is backwards compatible, but not
      forwards compatible.
      In the context of a cluster which has 'old' nodes (preceding this version) and 'new' nodes
      (this version or greater), a 'new' node can be introduced to a cluster, but an 'old' node cannot.
      Upgrading a live cluster one node at a time is supported, provided that no stats sessions are
      changed during the upgrade.
    * Fixed issues with alarms.csv logging:
      - rollover behavior improved to log a list of active alarms so that each alarms file is internally
        consistent after file rollover
      - logging only alarm raised and alarm cleared information
      - fix for incorrect alarm level for logging of cleared alarms
      New columns added 'logtime' and 'status' (which can be 'raised', 'cleared', or 'active')
    * DataStorage class for postgres DB configuration in rhino-config.xml is now
      org.postgresql.ds.PGSimpleDataSource
    * AuditingManagementMBean.setAuditLevel api (javadoc) altered to adhere to implementation:
      - Setter Sets whether read operations are logged to the management audit log. The correct values
        are "none", "writes", or "all" (case insensitive).
    * AuditingManagementMBean.getAuditLevel
      - Getter returns whether read operations are logged to the management audit log. The returned value
        will be "none", "writes", or "all" (case insensitive).
    * Improved value validation when creating Threshold rules.
    * Fixed handling of alarm raised when exceeding the SDK license limit.
    * Introduced a stats parameter set "EndpointLimiting", which shows how activities and events are being
      limited.
    * Fixed GC related file descriptor leak under Java 1.6 and when performing frequent deploy/un-deploy of
      several Deployable Units

Changes between 2.1-03 and 2.2.0.2
==================================
    * Rhino now requires Java version 1.6 or later.
    * Support for Java 6 running in 64-bit mode, on Solaris 10 and RH AS 5.5
    * Support for RedHat Linux AS 5.5
    * Changed how root user checks are performed on startup to make them more reliable.
    * Better GC default settings for production rhino.
    * Increased default maximum permanent generation size to 96mb (-XX:MaxPermSize=96m). Also
      added -XX:PermSize=96m to be consistent with other heap options.
    * Removed incremental CMS as default GC strategy.
    * Log JVM arguments on startup. Arguments are logged to a unique log key
    * Improved console commands to match with Rhino Element Manager
    * Added methods to LoggingManagementMBean: getAppenderType, getAppenderProperties,
      getThreshold, getCustomAppenderClassName, getCustomAppenderInfo,
      getFileAppenderInfo, getSocketAppenderInfo, and getSyslogAppenderInfo
    * Added "getappenderinfo" and "getappenderthreshold" rhino-console commands
    * Deprecated the process name property for log appender configuration,
      both in LoggingManagementMBean, and for rhino-import and rhino-export
    * Added methods to StatsManagementMBean:
      getParameterSetTypeMappings and getParameterSetTypeDescriptions
    * Disabled the old Web Console.  The new Rhino Element Manager can be downloaded separately.
    * Added a logging appender 'PolledMemoryAppender' to the default configuration,
      which is used by the Rhino Element Manager to show recent log messages.
    * Add a management command called "getRhinoVersion" which shows what types of licenses the
      currently running version of Rhino will accept.
    * A log of management commands is now written to management.csv in the logs directory.
    * Improve efficiency of Activity Handler Garbage Collection at high activity count
    * Increase the default rhino savanna settings max limit groups to 52MB/sec send traffic per node
    * Alarms are now raised/cleared automatically for DB connection state changes. JDBC connection failures
      now result in an alarm being raised.
      The alarm will be automatically cleared if the connection is re-established.
    * Added optional support for using Oracle Database as the backing management/profile database.
    * Removed PSQL_CLIENT from the config_variables file. No longer need a copy of psql client to run
      production Rhino.
    * Added SNMP statistics and notification support to Rhino, including Management interfaces.
    * Added Native support for SNMP Performance and Fault management, using SNMP v2c.
    * Activity Handler bugfixes: Activities now correctly prevent RAs from shutting down if there are
      remaining activities.
    * Overhaul of Savanna statistics: There are now two parameter set types, one for the membership ring
      and one for message groups.
    * Improvements to Cluster MembershipAlgorithm.
    * Removed experimental out-of-process cluster membership
    * Updated derby.jar to version 10.6.1.0 (19-May-2010).
    * Enforce the max-connections limit to prevent calling threads blocking indefinitely if the DB server
      is overloaded
    * Added AuditingManagementMBean for auditing related management operations.
    * Added management auditing capability to Rhino: Added AuditingManagementMBean for auditing related
      management operations.
    * All management operations are logged to "management.log" and "encrypted.management.log".
    * Miscellaneous JMX Remote Adaptor m-let enhancements
    * All Rhino MBean names have been updated to use a more standard form so they will work with ObjectName
      pattern based queries.
    * Added a useDefaultConfig method to LimiterMBean and a "usedefaultlimiterconfig"
      rhino-console command, for removal of node specific limiter configuration settings.
    * LimiterMBean methods getConfigSummary and getInfoSummary now fail fast rather
      returning incomplete data, and use null in the "parent" column when not set.
    * Added '-l, --noconsole' option to start-rhino.sh to disable console logging.
    * Added 'consolelog.sh' script for conveniently logging Rhino console output. This script will perform
      logfile rollover and timestamping for all input piped to it. Output will be written to work/log/console.log.
      Example usage: ./start-rhino.sh -s -k -l 2>&1 | ./consolelog.sh
    * Improved management of primary component through addition of 'make-primary.sh' script. This script can be
      used to transition a waiting non-primary cluster into the primary component. It has the same usage semantics
      as the '-p' option to start-rhino.sh.
    * Added init.d scripts for use with Rhino.
    * Redirected more startup logging to config.log. Reordered startup logs to prevent spam when running with --noconsole.
    * Added -XX:-OmitStackTraceInFastThrow to default Rhino JVM args to prevent stack traces from being
      optimised out of existence.
    * Enable VERBOSEGC logging by default
    * Make NEWSIZE and MAXNEWSIZE GC parameters configurable in the config_variables
    * Added system property which can be enabled to require authentication for local JMX connections
      (rhino.jmx.requireauth=true). Authentication is not required by default.
    * The console appender will now respect the appender target field correctly.
    * Increased default size of management DB to 150MB.
    * Improvements to the stats client console mode to distinguish between statistics which do not yet
      have a value and statistics which cannot be aggregated.
    * Fixed that rhino and view users can login to the web-console and list management operations without throwing a
      AccessControlException
    * Renaming get/setAuditLevel commands to get/setManagementAuditLevel.
    * Fixed a rate limiter bug involving silent floating point division by zero
    * Remove the version from rhino-remote.jar and rhino-client-apps.jar.
    * Added missing notification source to SNMP alarm notifications
    * Added output to the CreateLimiterCommand to make it more obvious to users that new limiters don't automatically
      have an alarm associated with them.
    * Removed some potential race conditions in the TokenBucketRateLimiter class by locking on small section of code.
    * Move the polled-memory-appender into a separate JAR loaded by the logging classloader
    * Fix to resolve issues where a parameter set reference continued to be held by the SNMP subsystem after parameter
      set removal
    * Change arguments to be the same for rhino-console and rhino-export.
    * Modify the rhino-install script to export a certficate during installation which can be used by REM.
    * Start Element Manager much later, after the MBeans have been initialised.
    * Increase Memory use settings to be in line with current server technology: Heap size = 1024MB,
      Young Gen & Perm Gen = 128MB

Changes between 2.1-02 and 2.1-03
=================================
    * Sped up classloading when using complex component hierarchies.
    * The ConfigProperties object passed to an resource adaptor entity in the
      updateConfigurationProperties callback did not include the Rhino
      extension properties which are present in the equivalent ConfigProperties
      object used in raConfigure. Now they are included.
    * Fix profile specification uninstaller so that you can uninstall a profile
      specification that has other components referring to it, if those
      components are in the same deployable unit.
    * Fix updateConfigProperties method so that it doesn't try to update resource
      adaptor entities in the STOPPING state if active reconfiguration is not
      supported.
    * Fixed an issue with rhino-export running in the default 'snapshot' mode
      that prevented a successful export if a profile serialisation codec
      required a non-class resource from the component jar.
    * Fixed glibc version detection logic in rhino-common script so it
      supports multi-digit minor versions.
    * Enhanced licensing support for resource adaptors.
    * Add a message passing facility, which resource adaptors can use to
      asynchronously pass messages to the same RA entity on other nodes
      in the cluster.
    * Fix an issue where ActivityIsEndingException is thrown when Timer is
      fired during service deactivation, and SLEE primary component exit.
    * The Rhino-defined rhino_max_activities resource adaptor entity configuration
      property can now be updated at any time. Previously this update was not
      allowed if the resource adaptor entity was active and did not support
      active reconfiguration. Changing this property does not generate a callback
      to the resource adaptor entity, thus the semantics defined by the SLEE
      specification for active reconfiguration are preserved.
    * The names of stats parameter set types defined by resource adaptor components
      are now scoped only to that resource adaptor, so that different resource adaptors
      that define stats parameter set types with the same name will no longer interfere
      with each other. A resource adaptor component can no longer be deployed if it
      specifies a root parameter set name equal to a root parameter set name already
      present in Rhino. The name must be changed to something unique before Rhino will
      allow it to be deployed.
    * Resource adaptor stats parameter set interfaces can now define counters using
      either incrementXXX or setXXX method declarations (previously only incrementXXX
      was supported).

Changes between 2.1-01 and 2.1-02
=================================
    * Fix a potential locking issue in stats replication.
    * Fix a problem where if Savanna message delivery stalls on one node
      and that node doesn't stop quickly, then the other cluster members
      shutdown as well.
    * Fixed a deadlock problem in TimerFacility.
    * Fixed log message when reporting unexpected exception from
      ResourceAdaptor.eventProcessingFailed().
    * Fixed a race condition that could cause a long running transaction that
      could not be removed and cause a worker thread to get stuck.
    * Fixed bug where some nodes would report "Not in STARTING state: Running"
      during startup.  The node would work correctly after this.
    * Fixed a race condition during startup where RAs could fire events before
      any services were ready to process them.
    * Further fixes on startup ordering to ensure that service activities are
      always available to services before any events are processed.
    * Fixed an issue where SBBs using Rhino's log4j classloader would fail to
      deploy if log4j classes appeared in the signatures of SBB abstract class
      public methods or SBB local interface methods.
    * Fixed an issue where the getResourceOption method should return null if
      the SBB did not specify a resource option.
    * Fixed an issue in DynamicGrant if either set has greater than two items.
    * Fixed incorrect escaping of newlines and other non-alphanumeric characters
      for RA entity config properties in Rhino export.
    * Fixed implementation of DeploymentMBean.getReferringComponents to include
      dependencies between profile specifications.

Changes between 2.0-02 and 2.1-01
=================================
    * The cluster-membership logic can now optionally be run in a separate
      process (see the savanna.oopcm=true property in read-config-variables).
    * Fixed problem where some events stats counters were always zero.
    * Improved handling of failure scenarios during node start-up.
      Now handles the scenario where a booting node loses visibility
      of the node it is extracting application state from, by extracting
      state from another node.
    * Fixed an issue where JDBC pooled connections would be leaked if
      a non-fatal SQLException occurred during commit.
    * Fixed problematic GC behaviour under low load.
    * Fixed a problem where a node trying to rejoin after being booted
      (for example, by long GC) could cause Savanna delivery to stall.
    * Fixed a stats-related deadlock when the session has been removed.
    * An oversight in oc-profile-spec-jar_1_1.dtd meant that <lock-strategy>
      wasn't allowed in <profile-spec>. We've released a new version of the
      dtd that does allow this, oc-profile-spec-jar_1_1_1.dtd.
    * The SLEE 1.1 tracer names for a particular notification source are now
      available on rhino console and the web console for 'get' and 'set'
      tracer level commands - by tab completion on rhino console, and by a
      linked drop-down list in the web console.
    * Fixed NullPointerException that sometimes happened when double-clicking
      values in stats GUI tree view.
    * Rhino 2.1 uses oc-resource-adaptor-jar_2_1.xml as its vendor extension
      DD if available. Otherwise it uses oc-resource-adaptor-jar.xml. A similar
      thing happens for SBB DDs. The 2.1 DD/DTD allows declarations for the new
      limiting features.
    * Fixed problem where the "exportall" console command would sometimes
      hang.
    * Added LIFO work queuing back into Rhino (it was in 1.4.5 but missing
      from 2.0). Use of LIFO or FIFO is selected by the queueType staging
      parameter. The node must be restarted for a change in this parameter
      to take effect. Changed the default queue type to LIFO. Changed behavior
      when the work queue is full. Previously a new item was rejected when the
      queue is full, now the oldest item in the queue is discarded and the
      new item added to the queue.
    * Added a maximum activities config property for all RA entities.
    * Added custom and RA input limiting and output servicing limiting, with
      a management command interface.
    * The security policy parser now supports system properties containing
      comma-separated lists. The format of these entries is
      ${{list:system_property_name}}. This will be expanded at runtime into
      one permission per entry in the list.
    * Rhino and Mlet configuration files now support system property
      substitutions, in the form of ${property.name}.
    * Introduced a new optional clustering strategy which provides fault
      tolerance for 2-node clusters. See the "Component Selectors" section in the
      Rhino Administration and Deployment Guide.
    * Used RSA key algorithm for keytool -genkey to fix a problem with
      Error code: sec_error_bad_signature persisting (even after adding an
      exception for FireFox 3).
    * The version of JLine used for the command-line console has
      been upgraded to version 0.9.94.
    * Each ResourceAdaptorContext instance will now use a new Timer thread
      instead of a single shared instance. This will prevent exceptions
      occurring in the Timer for one RA entity from affecting other RA entities.
    * Fixed Stats Client handling of very large parameter sets.
    * Updated version of Rhino remote API from 2.0 to 2.1 (rhino-remote-2.1.jar)
      to reflect changes in management classes related to rate limiting.
    * Added a command line utility 'dependency-graph', in the ${RHINO_HOME}/client/bin
      directory, which show the dependencies between SLEE components installed
      in Rhino.
    * Updated version of Rhino client apps API from 2.0 to 2.1
      (rhino-client-apps-2.1.jar) because of the addition of 'dependency-graph' above.

Changes between 2.0-01 and 2.0-02
=================================
    * findLongRunningTransactions console command now returns the set of all
      transactions not yet completed, rather than just transactions that are
      either Active or Marked for Rollback.
    * Alarm clearing log messages are now logged with log level "Clear"
      instead of the alarm level the alarm was raised with.
    * Fixed bug where cause throwables were being discarded by the Alarm
      Facility when an alarm was raised.
    * Updated the user rate limiter so that it is a per-node maximum limit.
    * Enum types now stored more efficiently in CMP fields.
    * The User Rate Limiter can be specified with a smaller rate initially,
      and a larger maximum rate. The Rate Limiter will gradually increase
      the allowed rate until it reaches the maximum rate. This allows
      administrators to cater for artifacts such as Just In Time Compilation.
    * The eventrouter.transaction_timeout system property can now be used to
      set transaction timeout in milliseconds for eventrouter transactions.
      Its default value is 30 seconds and is configurable in the
      read-config-variables file.
    * The transaction.default_timeout system property can now be used to set
      the default transaction age in milliseconds before a long-running
      transaction is aborted. Its default is 2 minutes and is configurable
      in the read-config-variables file.
    * The transaction.timeout_check_interval system property can now be used
      to set the interval in milliseconds between checks for transactions that
      need timing out. Its default is 10 seconds and is configurable in the
      read-config-variables file.
    * The JDBC connection pool is now configurable in the rhino-config.xml
      instead of hardcoded at 5 seconds.
    * Additions of stats parameter sets for monitoring JDBC connection pool.

Changes between 2.0-DP and 2.0-01
=================================
    * Further changes to support SLEE 1.1 compliance.
    * Per-node activation state. Each node now has its own activation state for
      the SLEE and for deployed components. Numerous management commands and
      scripts have been modified to support this.
    * Improvements to cluster membership logic in exceptional failure/restart
      cases.
    * Fixed a bug causing scaling problems in larger clusters.
    * Improvements to the Activity Handler and Event Router. The Activity
      Handler now supports pessimistic locking for activity contexts.
    * Individual RA entities can now create both replicated and non-replicated
      activities.
    * J2EE examples updated to SLEE 1.1 and included with this release.
    * Improvements to threshold rule calculations.
    * Additional statistics for monitoring performance and behaviour of activity
      handler.
    * Row per node option (-r) for stats client in console mode. This causes a
      row to be printed with results from individual cluster nodes, and totals
      for the cluster.
    * SLEE, Rhino, and Mlet DTDs are now included in doc/dtd
    * Old administration manuals have been deprecated in favor of the Developer
      Portal documentation found at http://developer.opencloud.com/
    * Improved handling of relative paths in the Rhino install script.
    * Added additional options to start-rhino.sh to manage per node activation
      state.
    * Fixed several configuration related startup messages.
    * Platform information is now output during startup.
    * Specific log keys renamed for consistency.
    * New 'AnnotateLog' console command. This command allows output of
      arbitrary log messages into the Rhino logs, primarily for debugging
      purposes.
    * Added option to exporter to create exports with no container
      configuration data (i.e. exports containing only deployed components, not
      SLEE configuration).
    * Additional commands added for object pool configuration.
    * Improved command line tab completion for several commands in the command
      line management client.
    * Fixed deadlock issue with querying bound activities.
    * Changes to the arguments of many commands to support per node activation
      state.
    * exportAll command line management client command renabled.
    * listEventRouterThreadState command added to command line management
      client.
    * Added new remote API, updated all existing clients to use it.
    * Performance improvements to ant management tasks.
    * Added missing RemoveUsageParameterSet ant task.
    * Added ant tasks for managing log appenders.
    * Notification Recorder Mlet now disabled by default.
    * Replication of activity state has been added.
    * Performance improvements to transacted operations on timers.
    * Performance improvements to collection of platform statistics.
    * Updates to support Java 1.6.
    * Fixed an issue with distributed locks not being released for some
      profiles when editing a large number of profiles within a single
      user transaction.
    * The notification recorder m-let is no longer included in the Rhino
      package.
    * The embedded web-console is now disabled by default. It can be reenabled
      in the $RHINO_HOME/etc/defaults/config/permachine-mlet.conf file.
    * Removed CPU stats collection from Rhino as the results were
      unreliable.

Changes between 1.4.5_02 and 2.0-DP
===========================================
   * SLEE 1.1 compliance updates. This release implements the majority
     of the functionality specified in the proposed final draft of the SLEE
     1.1 specification.
   * Internal components of Rhino have been redesigned to support SLEE
     1.1 and improve performance.
   * The appearance of the web console has been improved.
   * Usage MBeans now have a Rhino-specific extension,
     tabulateAll(...) which returns usage parameter data in a TabularData
     object.
   * Tab completion for more console commands has been implemented in
     the command console.
   * Various fixes to the statistics gathering system and statistics
     client have been applied.
   * Usage parameter names are now stable across node restarts
   * Fixed some scenarios where the stats client would return negative
     figures when a service is redeployed.
   * The statistics client now makes a single TCP connection to the
     SDK or a single server node.
   * The version of Jetty used for the web console has been upgraded
     to version 6.1.4.
   * The watchdog's default threshold for stuck threads has been
     increased to 75%.
   * Fixed a TransactionRolledbackLocalException error that occurred if a
     profile was modified then removed in the same user transaction.


Changes between 1.4.5_01 and 1.4.5_02
===========================================
   * Fix event router double delivery that could occur when a transaction
     rolls back because memdb is full.
   * Fixed incorrect name given to stats parameter sets for SBB usage parameter
     sets created by the administrator.
   * Fixed a ClassNotFoundException error that occurred when a management client
     attempted to invoke an MBean method that used a class not defined in the
     basic Rhino classloader as a parameter type.
   * Fixed session timeout errors seen when using the deprecated stats client
     API's from Rhino 1.4.0.  The errors did not affect clients using the new
     API.
   * Fixed a memory leak that occurred on each JMXR authentication.
   * Fixed a memory leak that occurred in a management client when obtaining
     certain proxy objects such as profile proxies, stats monitoring proxies,
     node housekeeping proxies, and SBB usage proxies.
   * SLEEClient methods close() and logout() are now synonyms to avoid confusing
     scenarios where a SLEEClient instance cannot be reused.
   * Added missing max-samples-per-thread element definition to rhino-config.xml
     DTD.
   * Added missing SubscriptionMode class to rhino-client.jar.  This class is
     used by management clients using the Rhino Statistics API.
   * Ensured that all root stats parameter sets exist before any components are
     installed or reloaded on node restart.


Change between 1.4.4_03 and 1.4.5_01
===========================================
   * The SIP Resource Adaptor has had some major enhancements since the previous
     release of Rhino, including support for replicated dialogs and forking.
     Existing deployment scripts will need to be changed to use the new SIP RA.
     See examples/sip/RELEASE-NOTES.txt for a description of these changes.
   * The Diameter connectivity pack is now available as part of the default
     Rhino install.
   * A new UserTransactionManagementMBean has been added which allows a
     management client to demarcate transaction boundaries for profile creation,
     edit, and/or removal.
   * The standalone Web Console can now be configured to attempt to connect to
     each node in a cluster and automatically failover when a node becomes
     unreachable.
   * Quorum nodes now appear in RhinoHousekeepingMBean's getClusterState()
     operation, and will respond to node shutdown requests via the
     SleeManagementMBean.
   * SBB usage statistics are now also accessible through the Rhino Stats API.
   * A new version of the exported xml profile data DTD is now supported, which
     allows finer control over create vs. replace behaviour during an import.
     The new DTD also allows profiles to be deleted as part of an import.
   * Stats parameter sets are now identified by name not type, and their name
     may be different to their type.  A stats parameter set may have no defined
     type if a type is not applicable.  For example the SBB-Usage parameter set
     has no defined type - types for these parameter sets are defined by
     the individual SBBs that collect usage stats.
   * The start-rhino.sh script no longer allows the use of the -p flag in
     situations where it could cause inconsistent cluster state.
   * Fixed a classloader issue that prevented resource adaptors that attached
     alarm listeners to a Rhino node's MBean server from being able to use
     RhinoAlarmNotification objects correctly.
   * Fixed a memory leak that could occur in a clustered environment if both
     replicated and non-replicated timers were used in the same transaction.
   * Fixed an exception infrequently reported by the long-running-transaction
     watchdog.
   * Fixed a bug where SBB private ACI attribute state for replicated
     activities was not being replicated correctly.


Changes between 1.4.4_02 and 1.4.4_03
===========================================
   * Fixed a file descriptor leak that occurred during code generation.
   * Fixed a bug in the JDBC connection pooling that could cause connections
     to be leaked in some circumstances, eventually leading to SBB event
     processing threads becoming blocked indefinitely waiting for connections
     to be returned to the pool (which never occurred).
   * Fixed a classloader issue that prevented resource adaptors that attached
     alarm listeners to a Rhino node's MBean server from being able to use
     RhinoAlarmNotification objects correctly.
   * Fixed an exception infrequently reported by the long-running-transaction
     watchdog.
   * Fixed a memory leak that could occur if both replicated and non-
     replicated timers were used in the same transaction.
   * Fixed a bug where SBB private ACI attribute state for replicated
     activities was not being replicated correctly.


Changes between 1.4.4_01 and 1.4.4_02
===========================================
   * Fixed a deadlock that could occur when cancelling a timer during a
     cluster membership change.
   * Fixed a bug in the notification recorder which prohibited log messages
     generated by the notification recorder for SBB trace messages to be
     deserialized at the other end of a socket appender.
   * Lifted limitation in size of serialised CMP field data from 32767 bytes
     to 2Gb.
   * Moved delivery of JMX notifications to notification listeners to a
     thread other than the thread that caused the notification to be
     generated.  This improves performance of SBBs, for example, where
     outputting a trace message causes a trace notification to be generated.
   * Added a new option to rhino-config.xml, <override-address>, to allow the
     address used for TCP state exchange to be explicitly specified. If
     unspecified (the default, and 1.4.4_01's behavior) then the address is
     autodetected based on the source address of datagrams received by the
     clustering system.
   * Fixed a number of obfuscation-related problems.
   * Fixed a TimerFacility bug that could cause replicated timer state to
     leak after the timer expired.
   * Fixed several potential deadlocks in event router.


Changes between 1.4.3_02 and 1.4.4_01
===========================================
   * Fixed an IllegalStateException that could occur when a single node was
     shut down using "stop-rhino.sh --node" or rhino-console while
     transactions involving replicated activites on that node were pending.
   * Added the ability to specify multiple Rhino hosts to attempt connections
     to in the Rhino Command Console (and custom management clients that use
     the Rhino Client API).
   * Added support for 64bit Java Virtual Machine on Solaris (Sparc and x86)
     and Linux operating systems.
   * Improvements to node boot time when large profile or management databases
     are in use.
   * Added a new snapshot feature to Rhino client library to increase export
     speed.
   * Fixed a deserialisation classloader problem of CMP fields when accessed
     by SBB code in a thread that is not currently executing an event-handler
     method, eg. SBB lifecycle method accessing CMP and the lifecycle method
     being invoked outside of an event-handler method call on the SBB.


Changes between 1.4.3_01 and 1.4.3_02
===========================================

   * Fixed a clustering protocol problem where an unreliable (but still usable)
     network could cause Rhino to erroneously report that a node was
     "repeatedly failing to receive messages" and hang if only one node was
     generating cluster traffic.
   * Fixed an obfuscation related problem which prevented events from firing
     correctly with certain RAs.
   * Fixed a classloader problem related to log4j.


Changes between 1.4.2_03 and 1.4.3_01
===========================================

   * Reduced the cost of assertions within Savanna when under heavy load
   * Updated default Savanna multicast addresses back into unallocated space
     (the 224.0.50.x range) as the old defaults had been allocated by IANA
     in June 2006.
   * The external management API for licenses has changed slightly due to
     improvements in the licensing system. 'long getLicensedCapacity()' has
     been replaced by 'long getLicensedCapacity(String function, String
     version).
   * Removed assertions and debugging from a handful of hotspots seen during
     profiling
   * Downgrade complaints about errors sending UDP cluster messages to DEBUG
   * Downgrade logging of stack traces when a database connection fails to DEBUG
   * Corrected the maximum queue size logic to avoid exhausting heap when a
     database connection fails while Rhino is under heavy update load (e.g. during
     a profile import)
   * Fixed a race condition between timer start and timer cancellation that
     results in timers not being correctly cancelled if the cancel occurred
     quickly after the timer was started.
   * Fixed excessive CPU use when distributing usage parameter set updates
   * Added support in the SIP RA for lazy parsing and the draft RFC
     draft-ietf-sip-outbound-03. The OCSIP RA Type version is now 1.3.
   * Removed deprecated manage.sh script. Please use client/bin/rhino-console
     instead.
   * Added support for passwords to be hashed in the Rhino password file.
   * Added a login module that uses profiles to authenticate users.
   * Fixed excessive CPU use in the Rhino clustering code.
   * Stack traces no longer displayed by default in command line console.
     A setshowstacktrace command was added to control this behaviour.
   * Fixed a bug in the pessimistic locking used by the Activity Context
     Naming Facility and the storage of ACI attributes.  The correct version
     of data is now retrieved from the DB after the pessimistic lock is
     obtained.
   * Added an serialisation optimisation for TimerID objects stored in CMP
     fields.
   * Fixed the J2EE Connector which had some classes missing, resulting in
     NoClassDefFoundErrors when trying to fire an event to the SLEE.
   * Fixed a number of minor SIP bugs.


Changes between 1.4.2_02 and 1.4.2_03
===========================================

   * Fixed an accounting bug in services statistics where root SBB's would
     be counted incorrectly in some cases.
   * Fixed a bug where reducing the number of staging threads would
     occasionally cause events to stall in the staging queue, and the
     available threads statistic to report the wrong value.
   * Fixed cases where remote class loading of dynamically loaded exception
     classes used in traces and/or alarms (eg. mlet start failure) should
     have worked but didn't.
   * Fixed a problem with additional security permissions granted to an SBB
     via the supplementary SBB deployment descriptor. Permissions should now
     work correctly, in that an SBB can perform privileged operations without
     using an AccessController.doPrivileged() code block, provided that no
     other "unprivileged" SBBs are in the call stack.
   * Fixed a threading related memory leak in the stats collection subsystem.
   * Fixed a deadlock when updating logging configuration at runtime.
   * Fixed a bug in logging config file handling.
   * Fixed a problem where firing a custom event could cause an invalid use
     of the EventLookupFacility, resulting in the node shutting down.


Changes between 1.4.2_01 and 1.4.2_02
===========================================

   * Fixed a problem where SLEE-generated activities for profile tables and
     active services were not being recreated on cluster restart when the
     previously persisted state of the SLEE (before the restart) was Running.
   * Tweaked handling of in-memory database synchronisation notifications on
     node startup to avoid use of the database while it was still potentially
     loading state.
   * Fixed import of profile data for profiles containing attributes of
     primitive-type arrays.
   * Fixed export/import of profile data for profiles containing attributes of
     char or java.lang.Character type where the value of the attribute is not a
     legal XML character.  Non-printable 7-bit ASCII characters or characters
     that are not letters or digits (according to the JVM) are now expressed in
     Unicode format in the exported data.
   * Fixed a problem with parsing the -s (password) option in the exporter.
   * Tweak to versioning scheme to allow licenses to be valid for a particular
     version of Rhino, rather than being tied to an individual release build.
   * Fixed the list of SBBs for operations that take an SBB as a parameter
     in the ServiceUsage MBean page in the Web Console.
   * Fixed a problem in the rhino-install.sh script that was causing the license
     file to be ignored when performing unattended installs.
   * Fixed a problem in the SIP RA that was causing dialog activities to not
     end automatically when the dialog-initiating server transaction failed.


Changes between 1.4.2-ga and 1.4.2_01
===========================================

   * Fixed a problem where library component jars with inter-dependencies could
     be reloaded in the wrong order on cluster restart causing the restart to
     fail.
   * Fixed a problem in the persistence of public ACI attribute state which
     gave rise to the possibility of optimistic concurrency failures to occur
     in subsequent transactions that only read back that state.


Changes between 1.4.2-rc3 and 1.4.2-ga
===========================================

   * Fixed problem creating file appenders with absolute paths.
   * Fixed a problem with the statistics monitoring client caused by a node leaving and then
     rejoining the cluster.
   * Improved exit handling code and scripts. -k option added to start-rhino.sh
     which will automatically restart failed nodes.
   * Slee state is now persisted to database. A failed cluster will now restart
     in the same slee state it was in before failure. Current slee state is now
     logged to console during startup.
   * Fixed problems with deserialisation of serialised data for array-type
     profile attributes during an import.
   * Fix for database initialisation script to allow for capitalised postgres
     database names.
   * Fixed a problem with viewing non-primitive profile data types from the web
     console when running in embedded mode.


Changes between 1.4.2-rc2 and 1.4.2-rc3
===========================================

   * Added listEventTypes and listResourceAdaptorTypes commands to the
     command line management console.
   * Corrected error in calculation of counter values used in evaluation of
     threshold alarms.
   * Improvements to formatting of long statistic names in command line
     statistics client.
   * Updated internal statistics heartbeat to ensure rollover of frequency
     distributions even when the SLEE is under no load.
   * Improved selectiveness of user rate limiter so that end events for
     existing activities are not rejected.


Changes between 1.4.2-rc1 and 1.4.2-rc2
===========================================

   * Fixed problems which occured when running against multiple databases.
   * Connection management fixes in JMX Remote client API.
   * The web console has seen many improvements, including improved
     documentation and interaction.
   * Issues with searching for activies/sbbs/timers with future relative
     times have been fixed.
   * Issues with using MS Internet Explorer with the web console have been
     resolved.
   * Issues related to threshold rules have been resolved. Reinstalling
     low-memory rules from an export now works as well as some
     minor fixes.
   * Fixed a potential IllegalStateException during deployment.
   * Rhino will now use the platform's MBean server when using Java 1.5.
   * Alarm MBean's setAlarm method now can use string representations of
     alarms. This means that the drop-down box on the rule config page of
     the web console works.
   * Resolved issue with stats client failing when a node fails.
   * Issues regarding creating a SyslogAppender from the web console have
     been resolved.
   * Two new commands have been added to the command-line console:
     createSocketAppender and createSyslogAppender.
   * Role-based security is now available at the JMX remote interface.


Changes between 1.4.1 GA and 1.4.2-rc1
===========================================

   * Fixes and additions to the web console and command line management
     clients.
   * Added Support for starting the Web console as a standalone management
     client (client/web-console script).
   * Script fixes and improvements.
   * Added threshold based alarms.
   * Improvements to configuration handling. New management commands are
     available to export and import configuration data.
   * Extensive license handling changes. Licenses should now be installed via a
     management client.
   * Library jar support has been added. A library jar is some inert set of
     classes and/or prepackaged jars that other SLEE components can depend on.
     Library jars deprecate the use of manifest classpath 'library' jars which
     suffer a number of limitations.
   * Merged DeploymentFileDatabase into ManagementDatabase to improve
     transactional consistency.
   * Improved generation of unique of Call-IDs, tags and branches by the Sip
     stack.
   * Enhanced statistics for production and SDK installs.
   * Added support for an RA to implement multiple RA types. This breaks binary
     compatibility with RAs compiled against the previous ResourceAdaptor
     interface.
   * Improved JCC examples.
   * Added security permission support for profile spec jars.
   * Fixed bug which allowed default profiles to be removed.
   * Added Quorum node support (start-rhino.sh -q). Quorum nodes are lightweight
     cluster nodes which are only used for determining cluster membership in the
     case of a node failure.
   * Corrected initialization of max DB sizes.
   * Fixed a bug in replication of profile table activities.
   * Alarm changes. Added a stateful alarm when a node leaves the cluster.
     Changed API so that alarm source must implement java.io.Serializable.
   * Minor clustering changes to allow nodes to be forcefully removed from the
     cluster, without affecting cluster integrity (see the shutdownNode command
     in the command line console).


Changes between 1.4.0 GA and 1.4.1 GA
===========================================

   * Added a license expiry alarm to give 7 days warning before a license
     expires.
   * Fixed bug that occurred when adjusting thread pool sizes at runtime.
   * Fixed occasional error during housekeeping lookup of timers and activity
     bindings when multiple nodes are present in the cluster.
   * Fixed a bug in Rhino's event router that could cause incorrect scheduling
     of events under high load with some applications.
   * Added several new commands to the command line management client. Fixed
     missing tab completions.
   * Changed staging configuration to be tunable at runtime.
   * Added a rule based threshold alarm manager.
   * Fixed incorrect descriptions of some built in statistics.
   * Fixed bug in exporter: Resource adaptor entity configuration property
     values are now quoted and/or escaped where necessary to ensure valid XML
     and correct parsing on import.
   * Fixed a bug in the updateConfigurationProperties method of the
     ResourceManagementMBean which didn't correctly re-notify the updated
     resource adaptor entity of the services that were installed and active in
     the SLEE, thereby breaking any event filtering the resource adaptor
     performed based on the state of services in the SLEE.
   * Numerous updates and fixes to the statistics monitoring client.
   * Added a checkConfiguration method to ResourceManagementMBean that suggests
     to a resource adaptor entity that it should check and/or reload any
     configuration state it has loaded.  For a resource adaptor entity to
     receive this notification the resource adaptor class must implement the
     com.opencloud.rhino.resourceadaptor.RhinoResourceAdaptor interface.
   * Fixed bug in exportAlarmTableAsNotifications method of Alarm MBean so that
     the node ID where the alarm was raised is correctly used.
   * Fixed bug in JMX SLEE Client API which reversed the old and new states in
     a SleeStateChangeNotification.
   * Fixed two bugs with pooling which could affect deployment and
     activity context naming facility when used in a cluster.
   * Added check to configuration parsing to prevent use of <remote-url> values
     which cannot be handled by JNDI.


Changes between 1.3.0 GA and 1.4.0 GA
===========================================

   * Added activity and service level configurability of fault tolerance
     features.
   * Added JMX remote Mlet for management API's and JMX remote client
     library.
   * Added new configurable parameters to aid performance tuning: object
     pool sizing, locking strategy for Activity Context Naming, and thread
     pool management.
   * Improved command line management interface with tab completion for
     most commands.  Added several new command line client commands to
     support new housekeeping and configuration features.
   * Added a statistics and monitoring interface allowing clients to monitor
     many internal Rhino performance metrics.  Added rhino-stats client
     application for viewing statistics.
   * Added new housekeeping API's for examining current Rhino SLEE state and
     removing selected activities or SBB's.  This API replaces the
     RhinoAdminMBean API in Rhino 1.3.0
   * Client applications now deploy in a separate client directory under the
     Rhino installation directory which includes the Rhino command line and
     statistics clients and support files, and the Rhino management Ant tasks.
   * Changed command line client and Rhino management Ant tasks to use new JMX
     remote client API.
   * Logging changes to reduce the amount of log 'noise' generated by Rhino under
     normal conditions.
   * Improved install script to better detect local configuration defaults.
   * Command line client manage.sh renamed to rhino-console and moved to the
     client directory under Rhino installation.  manage.sh now invokes
     rhino-console.
   * Fixed profile removal code to better manage memory requirements when
     removing very large profile tables.
   * Added configurable size limits for all internal memory databases to allow
     better management of available heap.
   * Improved overload behaviour to reduce performance costs incurred by failing
     some events under overload conditions.
   * Modified ResourceManagementMBean methods to allow whitespace between RA
     entity configuration property name=value pairs.
   * On Linux/x86 installs where JDK 1.4 is detected as the target VM a
     .hotspot_compiler file is created in the target directory to work around a
     JVM bug with LinkedList.toArray() on this platform.
   * Event "filtering" methods xxxFilter() in ResourceAdaptor class replaced
     with serviceXxx() methods.  This correctly identifies the underlying behaviour
     of the original filtering methods, and aligns with the direction expressed in
     SLEE 1.1 EPD.
   * Renamed UnrecognizedResourceAdaptorEntityNameException to
     UnrecognizedResourceAdaptorEntityException for consistency with other exception
     naming conventions, and again aligns with SLEE 1.1 EPD.
   * Replaced html management interface with role based security aware web console
     with improved user interface.
   * Implemented MVCC in Rhino memory databases so read transactions do not need to
     acquire locks.
   * Added the capability to configure multiple backend databases for persisting
     state from memory databases.

Sip RA & Examples:

   * Fixed problem closing idle SSL connections.
   * Replaced example SIP applications with new Proxy and Registrar services and
     added sample FindMeFollowMe and Location services.
   * Added support for Dialog activities to SIP RA.

Changes between 1.3.0-beta5 and 1.3.0 GA
===========================================

   * Corrections to internal JNDI and classloader implementation so that
     listBindings() works correctly for all SBBs.
   * SIP RA corrected handling of ViaHeader port values when no port is
     specified in the header.
   * Improved locking in memory database to allow for more fine grained
     locking.
   * Improvements in the parser for security permissions used by mlet
     configuration files and RA deployment descriptors to allow Java style
     comments.
   * Corrected SMPP-SIP example service to deploy correctly with OCSIP RA.
   * Improved exception handling in OCSIP stack.
   * Fixes to JDBC statement pooling to correctly pool statements with
     JDBC drivers other than PostgreSQL's.
   * Changed deployment code to allow deploying components which reference
     library jars that may contain duplicate classes or resources.
   * Fixed class loader problems that occurred at runtime between
     collaborating SBBs defined in different SBB component jar files.
   * Improved support for IPV6 addresses in the OCSIP stack and RA.
   * Fixed error in profile provisioning that could leave a profile in an
     uncommitted state when an error occurs while trying to create a profile
     using manage.sh.
   * J2EE example is now packaged separately from the SDK.

Changes between 1.3.0-beta4 and 1.3.0-beta5
===========================================

   * Minor modifications to the J2EE examples buildfile.
   * Fixed resource adaptor lifecycle callbacks when the SLEE was STOPPED,
     which previously could prevent clean SLEE shutdown.
   * Clarify and improve a number of log messages.
   * Add support for calling an external script to cause a JVM thread-dump if
     a watchdog timeout occurs.
   * Various resource adaptor infrastructure robustness improvements in the
     face of buggy resource adaptor implementations.
   * Improve reporting of exceptions causing rollback during distributed
     management operations.
   * Fixed a rare case where the watchdog would generate a spurious timeout.
   * The SLEE state (STOPPED, RUNNING, etc) now persists across SLEE restart.
   * Avoid errors involving COMMENT ON when using recent PostgreSQL JDBC
     drivers against a 7.4 or newer server.
   * Include a recent PostgreSQL JDBC driver by default. This gives substantial
     performance improvements when importing bulk profile data.
   * The install script now checks for JDK 1.4.2 or later, matching the
     documentation.
   * Exporter and ant management task updates to provide a smoother upgrade
     path to 1.4.
   * Added an export script upgrade utility to allow upgrade and import of
     scripts generated by older Rhino versions.
   * Fixed a hang on exit when the exporter encountered an error.
   * Fixed a number of race conditions during SLEE startup.
   * License infrastructure bugfixes.
   * Added ant management support for setting trace levels on more component
     types.
   * Fixed a number of SLEE eventrouter bugs. The majority of these only
     affect clustered (non-SDK) installs.
   * Fixed a deadlock involving dynamic security policy permissions.
   * The OpenCloud SIP (OCSIP) stack and RA is now included in SDK releases.
   * Updated the included SIP examples to use OCSIP by default.
   * IPV6 local addresses are included when expanding @LOCALIPS@ in
     configuration files.
   * Logging changes to produce less log noise under overload conditions.

Changes between 1.3.0-beta3 and 1.3.0-beta4
===========================================

   * Fixed unexpected SecurityExceptions that could be thrown from the JAIN SIP
     RA when getNewClientTransaction() or getNewServerTransaction() were called
     on the underlying SIP stack.
   * A deadlock in Rhino's TimerFacility implementation was fixed.
   * Corrected a bug where null activities would never be completely removed,
     eventually exhausting memory.
   * A ConcurrentModificationException in the HTML adaptor session purger
     thread has been fixed.
   * The HTML adaptor session purger thread should now take considerably less
     CPU and generate less garbage.
   * Fixed a bug where Rhino could continuously attempt to redeliver an event
     when the event processing transaction failed early in the event delivery
     algorithm.
   * The J2EE RA example buildfile now has undeploy targets.
   * The NetBeans plugin has been updated.
   * Fixed NullPointerExceptions and spurious warnings that could be generated
     by the SIP RA when communicating with buggy SIP peers.

Changes between 1.3.0-beta2 and 1.3.0-beta3
===========================================

   * start-rhino.sh no longer modifies the LANG environment variable.
   * The file.encoding system property and various JNDI-related system
     properties are no longer set.
   * Rhino's internal JNDI implementation is now loaded via a different
     mechanism (jndi.properties) to avoid being overridden by SBB-provided
     JNDI implementations.
   * Minor JNDI environment correctness fixes.
   * Command-line arguments to javac and jar are now passed via @-syntax
     command files to avoid problems on systems with limited command-line
     lengths.
   * Updates to persistent files are now done via a mechanism that does not
     require atomic rename-and-replace support from the host system.
   * Declarations of CMP fields not found in the SBB abstract class are now
     handled correctly.
   * SBB CMP fields that store a SbbLocalObject can now correctly store
     a particular SbbLocalObject in more than one field simultaneously.
   * SBB garbage collection after event delivery to a SBB that
     removed itself now operates correctly.
   * Retrieving non-reentrant SBBs from a CMP field no longer incorrectly
     generates a reentrant-call exception.
   * The rhinomanagement install subtask now respects the provided URL.
   * Usage parameter sets now correctly persist over a Rhino restart.
   * While use of the SDK under Windows is still officially unsupported, a
     number of changes have been made to the install and support scripts and
     default configuration to be more Cygwin-friendly.
   * Generated classes now have somewhat more concise names.

Changes between 1.3.0-beta1_02 and 1.3.0-beta2
==============================================

   * The install scripts were updated to refer to the canonical
     hostname, not 'localhost', in HTTP management URLs. Using the canonical
     hostname produces a more obvious failure in the case where the browser
     is configured to use a HTTP proxy but the proxy denies access to the
     html mlet's main or static content ports.
   * The security policy for the JAIN SIP RA was moved from rhino.policy to
     a per-RA deployment descriptor.
   * Several RAs are no longer signed, as they are no longer referenced
     by signer in the Rhino security policy.
   * Rhino now uses external helper scripts to invoke 'javac' or 'jar':
     run-compiler.sh and run-jar.sh. These scripts can be customized as
     needed for a particular install. The default scripts run 'javac'
     and 'jar from $JAVA_HOME/bin under 'nice -n5'.
   * As javac now runs in a separate process, memory leaks in javac that
     eventually resulted in OutOfMemoryErrors after many deployments should
     no longer occur.
   * On Linux installs, LD_ASSUME_KERNEL=2.4.1 is set to disable use
     of NPTL threads, as there are internal JVM deadlock problems
     under load when using current JVMs with some versions of NPTL.
   * A race condition between event delivery and service deactivation that
     could cause NullPointerExceptions was fixed.
   * Accessing session beans (ejb-ref-type of Session) from SBBs is now
     supported.
   * On undeployment of a service, unsetSbbContext() is now correctly called
     on any remaining pooled SBBs. Note that currently this only happens
     on undeployment of the service, and not on service deactivation.
   * The SIP Registrar SBB now listens for service deactivation events and
     promptly cleans up when they are received. This should eliminate delays
     when deactivating the example SIP services while there are active
     registrations.
   * An ant script to deploy the J2EE resource adaptor is now included in
     examples/j2ee/build.xml.
   * The SLEE state exporter and supporting ant tasks have been updated to
     generate buildfiles that run correctly regardless of the current
     directory. This required an incompatible change in the "rmissl"
     parameter of the rhinomanagement ant task. If you are importing SLEE
     state from a -beta1 buildfile, you should edit import.properties and
     remove the "file:" prefix from the "rmissl" property for the import
     to operate correctly.

Changes between 1.3.0-beta1 and 1.3.0-beta1_02
==============================================

   * A bashism that prevented the install/support scripts from
     working on Solaris and other systems where /bin/sh is not a 'bash'
     was fixed.

Adaptavist Theme Builder Powered by Atlassian Confluence