Fixed Bugs and Known Issues in 5.2

                                               

Summary: A list of fixed bugs and known issues for GigaSpaces 5.2 (build 1708).

Overview

Below is a list of fixed bugs since GigaSpaces 5.1 (build 1603), and a list of known issues:

Core

  • CORE-425 – Two transactions-related issues have been fixed:
    • No eviction from LRU.
    • Enhancement:Transaction allocated objects are now cleared in the background without affecting the client.
  • CORE-429 – Fixed: The GSIterator didn't work with ExtendedMatchCodes.
  • CORE-442 – After the recovery phase, the replication handshake process stops the replication process from source space to target space.
  • CORE-445 – UpdateMultiple supports Update_OR_WRITE. For more details, refer to the UPDATE_OR_WRITE section.
  • CORE-458 – Exclusive read-lock support.
  • CORE-459 – Fixed: Update with writeIfAbsent returned null when locked under a transaction. An OperationTimeoutException is now thrown instead.
  • CORE-460 – IWorker enhancements.
  • CORE-461 – Updated the space schema IWorker element. The following tags were added: <active-when-backup>, <shutdown-space-on-init-failure>, <instances>. For more details, refer to the SBA Components section.
  • CORE-467 – null templates are now supported in broadcast notify.
  • CORE-469 – The count() method now works with ExtendedMatchCodes.
  • CORE-470 – SpaceFilter enhancements.
    • CORE-462 – Added notify filters – before/after each notify trigger.
    • CORE-466 – Added notify filters before/after all notify triggers.
  • CORE-471 – Updated the space schema filter element – the <active-when-backup> and <shutdown-space-on-init-failure> tags have been added. For more details, refer to the SBA Components section.
  • CORE-474 – Fixed: Read or take under a transaction after an update returned a shadow Entry.
  • CORE-481 – GSIterator concurrent modification/access handling has been added.
  • CORE-490 – Fixed: The LocalTransactionManager.getState() returned ABORTED after the transaction was comitted.
  • CORE-493 – Fixed: The GSIterator always registered notifications with FIFO.
  • CORE-508 – Fixed: Lease Manager CocurrentModificationException occured while traversing a pending answers table.
  • CORE-509 – In an embedded space, removed the supplement of 50 [ms] for every take operation with timeout, when no result value was received.
  • CORE-510 – Fixed: The space didn't throw an EntryNotInSpaceException when the distributed cache was updated.
  • CORE-522 – Fixed: The implementation of the consistent equals() method was missing in space proxies.
  • CORE-532 – A deep clone of the spaceURL is performed to prevent direct reference access and change.
  • CORE-533 – A STARTED state has been appended to a spaceURL for replication and cluster proxy, so that replication and load-balancing look only for started spaces (supported only when using Jini lookup).
  • CORE-95 – BroadcastNotify is supported in the NotifyDelegatorMultiplexer in a regular space, but not in a partitioned space.
  • CORE-562 – Fixed: when tring to read a super class from a cluster that has a sub class in the partitioned space, buildTypeTableEntryFromExternalEntry failed to find the getClassTypeInfo. This caused a null return value (when tring to broadcast), or an IllegalArgumentException exception, even if the subClass was in the cluster.
  • CORE-547 – Fixed: java.lang.NoClassDefFoundError: javax/management/ObjectName was thrown after terminating gsInstance.sh (using Ctrl+C).
  • CORE-544 – Fixed: GSIterator collections template restriction – all the templates in the collection had to be of the same type.
  • CORE-531 – Fixed: When the count() method was used with local transactions or Jini transactions, a com.j_spaces.core.sadapter.SAException: Transaction net.jini.core.transaction.server.ServerTransaction does not exist exception was thrown.
  • CORE-530 – Fixed: Notify recovery and recovery-constructed URLs did not support the com.gs.cluster.url-protocol-prefix variable. This caused problems when working with networks that do not support multicast.
  • CORE-515 – Fixed: The POJO NotifyDelegator returned an Entry packet with the wrong object format.
  • CORE-476 – Fixed: When writing an Entry with a UID that has a short lease (shorter than the lease manager interval), and writing the same Entry to the space after the lease expired, an EntryAlreadyInSpaceException was thrown.
  • CORE-473 – Fixed: When cleaning the space before changing the space metadata, the space needs to be restarted. Otherwise, a class version incompatibility exception was thrown.
  • CORE-197 – Fixed: Availability of Entries aborting a transaction (Mahalo transaction) – the item was not synchronously available after the abort.
  • CORE-582 – Fixed: A NullPointerException was thrown when the backup space restarts in a different GSC – only the missing primary space partition was recovered, the backup wasn't restarted in a different GSC. The Spaces view showed the space as active while the Cluster view and the GSC views did not.
  • CORE-581 – Fixed: The cache context was occupied and wasn't released – the problem was that the thread was stuck in space shutdown in the CacheContextFactory.closeAllContexts() method.
  • CORE-578 – Fixed: A NullPointerException was thrown in the PrimarySpaceSelector.
  • CORE-567 – Fixed: Notifications for slow consumers were not disconnected. Slow consumer properties were added to the space schema. For more details, refer to the Slow Consumer section.
  • CORE-564 – Fixed: SizeEvictionStrategy did evict Entries of the same size from an internal cache. This caused the cache size to increase.
  • CORE-539 – Fixed: UpdateMultiple threw an exception when using a OneWay update mode.
  • CORE-336 – Fixed: The LocalTransactionManager threw a RuntimeException when the lease was smaller or equaled to 0. The system now checks if lease duration is smaller or equals to 0, and if so sets the timeout to Long.MAX_VALUE.
  • CORE-11 – LRMI Smart-Stubs are now supported. RemoteStub behaves like a local call to the remote implementation only when this stub is located in the same VM as remote-impl.
  • CORE-592 – After changing the JDBC Storage Adapter to use unlimited columns or table names, HSQL version 1.8.0 is now supported. This also applies to any other database that uses this feature.
  • CORE-607 – SpaceStandbyException has been changed to InactiveSpaceException.

Persistency

  • DB-121 – Fixed: Indexed file size grew to unreasonable sizes.
  • DB-123 – SELECT DISTINCT is now supported.
  • DB-126 – Support for BLOBs in Oracle DB and the default type.properies has binary=BLOB. For more details, refer to the Persisting Large Entries section.
  • DB-127 – Fixed: All the tables on cold init were not cleaned.
  • DB-130 – Fixed: NullPointerException when the type.properties is not found.
  • DB-131 – Fixed: CacheStore/CacheBulk: Unordered writes under a transaction with a Hibernate implementation.
  • DB-137 – Fixed: Memory leak in ParserManager.
  • DB-148 – Fixed: Parsing errors with multiple parentheses.
  • DB-163 – Fixed: Using readIfExists with an SQLQuery caused an exception – support for readIfExists has been added.
  • DB-154 – Fixed: A JDBC call to IProcedure result an internal exception.
  • DB-151 – Fixed: When trying to query a root class and all its subclasses using SQLQuery(rootClass.className, whereClause), where whereClause was null, an empty string, or any other expression that would render instances from diverse classes in the inheritance hierarchy, an exception was thrown.
  • DB-149 – Fixed: When using a SQLQuery template with readMultiple, the array of Entries returned had their UID set to null.
  • DB-143 – Fixed: SQLQuery class hierarchy returned incomplete values – the return object class type was created from the wrong class type. Therefore, the result object contained only the parent template class fields.
  • DB-136 – Fixed: JDBC Driver returned an incorrect connection.

Query Engine

  • DB-132 – Fixed: SQL IN does not work with a string.
  • DB-133 – Improved the IN query's performance and memory consumption.
  • DB-135 – Fixed: Issues when using SQLQuery with multi threaded client.
  • DB-139 – SQLQuery now uses the passed template when the QUERY part is set to null.
  • DB-140 – SQLQuery supports SnapShot().
  • DB-145 – AVG has been added to the SQL interface.
  • DB-147 – NotifyDelegator support SQLQuery as template.
  • DB-150 – SQL LIKE uses space regular expression matching. Furthermore, regular expressions have been changed have been fully adjusted to Java regular expressions.

POJO & Spring

  • APP-383 – Fixed: When defining the POJO's id as auto-generated, the id was included as one of the ExternalEntry field names.
  • APP-391 – POJO versioning support (including optimistic locking) - xml and annotations.
  • APP-450 – The POJO persist flag is now supported.
  • APP-485 – Fixed: The ReadMultiple/TakeMultiple methods with an ExternalEntry object that represents a POJO, returned a POJO instead of an ExternalEntry.
  • APP-496 – Fixed: Configuring the same attribute name in the gs.xml file for a class and its subclass, resulted duplicated Entry attribute in the Space Browser Classes view.
  • APP-508 – SpringModules Declarative Cache example has been added.
  • APP-521 – The id element which holds the auto-generate attribute has been added, instead of declaring it as part of the property element in the gigaspace-metadata.dtd file.
  • APP-526 – The FieldInclusion flag has been added – if true, all the POJO's fields are taken into account, even if they have no @SpaceField annotation.
  • APP-547 – The springmodules jar file name has been changed from springmodules-javaspaces.jar to spring-modules-javaspaces.jar.
  • APP-551 – All POJO and Spring examples have been updated and tested with the new gigaspaces-metadata.dtd file.
  • APP-563 – Fixed: The POJO wasn't updated with it's current version. The converter.updatePOJOFromIGSEntry() method has been added to allow this. This method has also been added also to the JSpaceProxy and JSpaceClusterProxy classes.
  • APP-600 – Annotation names and gs.xml elements and attributes have been updated in gigaspaces-metadata.xsd. For more details, refer to the POJO Class and Field-Level Annotations section.
  • APP-623 – Fixed: A ClassCastException was thrown when UpdateMultiple with a POJO returned EntryNotInSpaceException.
  • APP-637 – Performance improvments using POJOs with a null default value: In the previous release, the system checked if each object had the @SpaceProperty nullValue attribute declared, even if the member's value was null. In this release, the system first checks if the member's value is null, and then checks if nullValue is declared.
  • APP-641 – The hashMap property has been added in the GigaSpacesFactoryBean for Local View support in Spring.
  • APP-656 – Fixed: Interceptor in the bean util Apache project didn't check if the descriptor is not IndexedPropertyDescriptor (the converter does not work with the IndexedPropertyDescriptor).
  • APP-657 – Regular expressions have been updated in the Spring and POJO examples – tests were fixed because the regular expressions match method was changed.
  • APP-671 – The SingleSpaceWriteActionListener call was improved to use getUID instead of checking if there was a UID in the ExternalEntry object before the update operation, and only then taking the UID.
  • APP-678 – Fixed: Bug in the converterhelper – when a gs.xml file failed to load, all the other gs.xml files would not load.
  • DB-120 – Fixed: Can't perform write after deleting the same POJO under a transaction.
  • APP-204 – Fixed: The tags <proxy-broadcat-threadpool-min-size> and <proxy-broadcat-threadpool-max-size> were not created in the load-bal-policy section of the static cluster configuration.
  • APP-765 – Fixed: The version and persist members existed in the ExternalEntry field list. These have been removed, non-dependant on the include property value.
  • APP-754 – Fixed: When working with operations that return Entries (readMultiple, read, take, and takeMultiple), and providing a POJO template, a POJO was returned instead of an ExternalEntry object.
  • APP-752 – When one gs.xml file from a directory fails, the system now tries to parse the next one in that directory, instead of stopping the loading process.
  • APP-727 – Fixed: The POJO inheritIndexes attribute's default value was false instead of true.
  • APP-709 – GigaSpaces Spring remoting now supports partitioned spaces – the _IndexField() method has been added to the result object of the remote execution in the Spring modules project. This has been updated in the spring-module-javaspaces.jar.
  • APP-708 – The helloSpacePojo example and all Spring examples have been updated with the new gigaspace-metadata.xsd file.
  • APP-682 – Fixed: The ClusterSpaceWriteActionListener class created a POJO class when only checking primary key value.
  • APP-672 – Fixed: After running Benchmark for a POJO object type, in the Classes view, other classes with a zero Instance Count also appeared.
  • APP-602 – The @SpaceRouting annotation, and the routing XML element have been added as a technology preview. For more details, refer to the POJO Class & Field Level Annotations.
  • APP-503 – Fixed: When persisting domain objects that extend com.j_spaces.core.client.MetaDataEntry and using the HibernateCacheStore, the following message was shown: INFO [com.gigaspaces.pojo]: A getter or setter method for member transient is missing in the POJO com.j_spaces.core.client.MetaDataEntry. This message is not displayed any more.
  • APP-525 – The @SpaceIgnore annotation and the ignore element have been added. For more details, refer to the POJO Class & Field Level Annotations.
  • APP-571 – Loading single gs.xml and jar files with gs.xml files is now supported.
  • APP-792 – The gs.xml generator has been updated with the correct default values:
    • The GsXmlGenerator now defines inherit-indexes as true instead of false.
    • The generateGsXml.bat and generateGsXml.sh scripts description has been updated with the correct default values.
  • APP-782 – The <GigaSpaces Root>\spring\examples\gigaspacestemplate\bin\startAll.sh has been updated with the correct URL name.

Configuration and Tools

  • APP-196 – CLI: The IsClustered column name has been replaced with cluster schema/cluster name.
  • APP-221 – The CLI -config option has been added, which provides the capability to run configuration reports.
  • APP-506 – Fixed: When loading a second instance of gsInstance/gsServer on the same machine, the script was broken - Windows only.
  • APP-509 – Multi unicast registrations and lookups is now supported using the locators URL property.
  • APP-510 – Fixed: The container name was saved in the container configuration instead of the schema name.
  • APP-511 – Fixed: The containerName parameter didn't function in the CLI admin command.
  • APP-524 – Enhancements to the SpaceURL and SpaceURLParser objects. For more details, see Distributed Unicast-Based Lookup Service Support
  • APP-528 – A new CLI sql command has been added that enables executing SQL queries on the space.
  • APP-534 – Fixed: System.out was used instead of gs.java.logging in various places which are mainly Entry points to the system, such as the system environment, SpaceFinder, security, logging etc.
  • APP-537 – org.springmodules.javaspaces.gigaspaces.SpringTracer.level = INFO has been removed from the gs_logging file.
  • APP-546 – Enhancements in the Primitive class for better converter performance.
  • APP-549 – Fixed: When a lookup group name is defined as all, a NullPointerException was thrown in the SpaceURLParser class.
  • APP-552 – The write() method implementation has been updated in GigaSpacesTemplate to call write() using the UPDATE_OR_WRITE modifier.
  • APP-560 – Fixed: The Service Grid CLI start or stop space commands didn't display the proper spaces.
  • APP-562 – Fixed: The Service Grid CLI destroy command didn't work with the RMI registry.
  • APP-565 – Fixed: The UPDATE_OR_WRITE modifier supported only POJOs that have keys declared as auto-generate = false. In this release, POJOs that have keys declared as auto-generate = true are also supported.
  • APP-584 – Proxy consolidation: All abstract logic has been moved from JSpaceProxy and JSpaceClusteredProxy to AbstractSpaceProxy.
  • APP-593 – The <lus_host> override property name has been changed to com.gs.jini_lus.locators.
  • APP-603 – Fixed: Bug in ConverterHelper called all classes for postProcess.
  • APP-606 – Fixed: The CLI list -url option did not work without specifing the container name.
  • APP-609 – Removed redundant Jini configuration, since it throws an AbstractMethodError.
  • APP-613 – Fixed: When a properties object was passed into the SpaceFinder with the gs.space.url.arg.properties, it was not parsed.
  • APP-170 – MalformedURLException when trying to find a space using the Jini protocol, and the space name is "*".
  • APP-197 – In CLI: The Space URL which the container/space is initialized with is shown (as opposed to getURL() in earlier versions).
  • APP-614 – Fixed: gs.space.url.arg.mirror and gs.space.url.arg.state were not supported with the custom properties object.
  • APP-621 – Fixed: When a remote container URL is passed to the SpaceFinder.find(), JSpaceProxy is returned instead of IJSpaceContainer.
  • APP-622 – All the schemas/configurations/resources load has been consolidated into one utility which is also class-loader aware.
  • APP-624 – There is now validation for a correct space URL format in case of cluster_schema=primary_backup.
  • APP-639 – Fixed: When jini://*/*/* is used, a lookup service attribute Name with value * was created.
  • APP-669 – Fixed: Lookup using RMI didn't work as well as lookup of container using Jini.
  • APP-677 – Fixed: NullPointerException was thrown in the SpaceURLValidator in case of a null property.
  • APP-750 – Fixed: When running a second instance of gsServer on the same machine, JMXConnectionServer failed to start.
  • APP-749 – Fixed: Using JDK 1.4, dynamic discovery of spaces throws an exception, and no services are discovered.
  • APP-746 – Fixed: Unable to load static cluster configuration, when a URL with more than one parameter is defined in the <member-url> element.
  • APP-723 – The WRITE_ONLY modifier has been added to UpdateModifiers – applies to write operations with modifiers, and IJSpace.setUpdateModifiers in the proxy level.
  • APP-720 – Fixed: Not all container properties are saved in container schema file.
  • APP-717 – Fixed: When running run_HelloWorldEmbedded from the helloSpace example, Reggie initialization failed – problem expanding the com.gs.jini_lus.locators system property.
  • APP-714 – Fixed: All calls to Thread.currentThread().getContextClassLoader().getResourceAsStream(name) must have a name without a prefixed /. This impacts all configuration files loading in the entire system including loading in the context of the Service Grid.
  • APP-713 – Fixed: SpaceFinder failed to find a space after calling SpaceURL.setPropertiesPrefix().
  • APP-707 – Fixed: System defaulted to localhost:4160 for locators (unicast discovery) – two Jini services may still incorrectly talk to each other even in a different Jini group on the same box. Currently, the system does not default to localhost:4160, not in the space nor in the Service Grid, so this problem does not occur anymore.
  • APP-684 – The multicasttest utility now uses the Jini address and ports. Jini Multicast addresses: 224.0.1.85, 224.0.1.84, port 4160.
  • APP-668 – The value of <max_sa_connections> has been changed from 100 to 20 in all space schemas.
  • APP-666 – Fixed: Problem with the Service Grid CLI command space create, when used after starting an embedded space using the gsServer command – a message that the container is not found was displayed.
  • APP-660 – Fixed: $JSHOMEDIR always got pre-pended to the path in the gs_logging.properties file, regardless of the value assigned to java.util.logging.FileHandler.pattern (in $JSHOMEDIR/config/gs_logging.properties).
  • APP-653 – Monitoring and management from remote systems using the JMX jconsole is now available (see the REMOTE_JMX variable in the <GigaSpaces Root>/bin setnv.bat/sh file. This allow troubleshooting the JVM, threads, memory and changing the space logging levels.
  • APP-422 – <is-multiplex-connection> is now true by default in all space schemas.
  • APP-220 – The ability to control the title name when starting the gsServer was added.
  • APP-187 – Fixed: When using loadFromResource() to load configuration or schema files, the current class loader wasn't always used.
  • APP-664 – Fixed: Locks in the LookupFinder/SpaceFinder – a service was not found in various scenarios.
  • APP-435 – The BEFORE_TRIGGER_NOTIFY, AFTER_ALL_TRIGGER_NOTIFY have been added to the Statistics object. Notify sent and Notify ack options have been added to the Space Browser Statistics view, and the current Notify option has been renamed to Notify registration.
  • APP-787 – Fixed: writeMultiple in OneWay mode threw a NullPointerException.
  • App-724 – Space and container MBeans improvements:
    • Operations have been exposed and fixed.
    • The exposed attributes have been updated, and their accessibility and description has been fixed.
    • JMX resources have been updated.
    • The need to set the com.gs.jmx.enable system property which the Service Grid used to set has been removed. As a result, the MBeans now register to an external MBean server.
    • MBeans have been tested using JDK 1.5 and JDK 1.4 (IBM 1.4).
  • APP-726 – An ExternalEntry from a replicated space can not continue read when a space fails – when trying to read an Entry using its super class as a template from a replicated space, it returns null (when trying to broadcast) or an exception (IllegalArgumentException) even if the sub class is in the cluster.
  • APP-143 – Since the getName() method in the JSpaceContainerProxy class is not remote call anymore we need another method that will check container accessibility.
    New ping() method will do it for as like the same ping() method in space proxy.

Space Browser

  • APP-791 – Fixed: When stopping, starting or restarting a space and then immediately selecting another space, the selected operation was invoked for the wrong space.
  • APP-207 – Fixed: The Cluster Wizard didn't create mirror service tags with default values.
  • APP-208 – Fixed: The Cluster Wizard didn't create cache-loader tags with default values.
  • APP-209 – Fixed: The Cluster Wizard didn't create the <notify-recovery> tag in the static cluster schema.
  • APP-210 – Fixed: The Cluster Wizard didn't create the <ttl> tag in the repl-policy section of the static cluster schema.
  • APP-211 – Fixed: The Cluster Wizard had to create four missing replication policy tags in the static cluster schema.
  • APP-24 – The Object Type area was added in the Space Browser Classes view that indicates whether the selected object is a Pojo or an Entry.
  • APP-527 – The ability to view complex attributes in the Space Browser Query view has been added - the Object Inspector.
  • APP-557 – Active transactions viw added to the Space Browser.
  • APP-642 – Fixed: In the first window of the Cluster Wizard, the Select Topology combo box was empty.
  • APP-734 – Fixed: In the Space Browser Cluster view, when pressing the cluster group node, the tabs inside the Replication and Fail Over tabs were disabled.
  • APP-665 – Fixed: In the Benchmark view, when writing objects to the space using the put operation, and trying to get these objects from the space – browser hangs.
  • APP-604 – Fixed: The Cluster Wizard ignored the cluster's size when creating a second cluster.
  • APP-567 – The Count column has been added to the space network table.
  • APP-635 – The 'Number of Backups' text box is now enabled only when choosing the partitioned-sync2backup or primary-backup cluster schemas in the Cluster Wizard. In other cases it is disabled.
  • CORE-537 – Fixed: When using the Benchmark view, a NullPointerException was thrown when using an Externalizable Object type with a local transaction.
  • APP-788 – Fixed: In a stopped space, exceptions were displayed inside dialogs, and exceptions were logged with a Severe level. These exceptions were thrown from the SpacesViewPanel class.

CPP & .NET

  • CPPNET-17 – Fixed: A class that is not annotated with the [versionID] attriute threw an array OutOfBoundException.
  • CPPNET-18 – Fixed: Writing a class with a FIFO attribute within a PONO fails.
  • CPPNET-22 – Fixed: When using objects declared in lib files, ddl files, etc., an assembly context mismatch occurred.
  • CPPNET-26 – Fixed: .NET take did not generate the correct snapshot of an object.
  • CPPNET-27 – Fixed: When writing a new object to the space, with parameters that are set to null, the object that was written to the space had missing parameters.
  • CPPNET-30 – Fixed: Converter.getObject(externalEntry) failed to create a .NET object when the object contains fTypeCode = 0 (custom define type).
  • CPPNET-32 – Enabled configuration of the JVM - not hard coded.
  • CPPNET-34 – A constructor flag was added, which ignores built-in JVM defaults, allowing the user to fall back to the CodeMesh configuration file.
  • CPPNET-33 – Fixed: Inner-class serialization caused a Class Name is null exception.
  • CPPNET-60 – Fixed: The comparison ExternalEntry value did not match the default value because they are different object types. This worked when the default value was specified as a string, but the codemesh data types returned different values to the equivalent .NET types.
  • CPPNET-58 – Fixed: OverrideKey did not work – the converter used the wrong typeTable member to initialize the UID, and did not take into account that the user may have overridden this at runtime.
  • CPPNET-56 – Fixed: Exception was thrown if the user defined a version attribute of type string and the string was not convertable.
  • CPPNET-54 – Fixed: An exception was thrown when writing to a partitioned-hash-based cluster via a PONO.
  • CPPNET-53 – Fixed: GSIterator.next() threw a com.gigaspaces.converter.ConversionException exception.
  • CPPNET-52 – Fixed: A getTemplateEntry method that supports match codes could not be found.
  • CPPNET-51 – Data types have been expanded to include arrays of primitives in both PBS and DirectAccess.
  • CPPNET-50 – Fixed: Byte arrays took a special path through the code that was overkill. These byte arrays are now dealt with as a primitive types to improve overall performance.
  • CPPNET-49 – Fixed: The PONO clear operation removed all of the object's classes in the hierarchy including lower and upper classes.
  • CPPNET-48 – Fixed: Reading PONO objects with a specific field order failed. The proxy expected an integer instead of a string.
  • CPPNET-47 – Fixed: When performing readMultiple or take with a PONO using derived classes, null was returned even though the template was correct.
  • CPPNET-46 – Fixed: Due to the semantics of static initializes in C#, when using a static type definition that takes its value from Java via codemesh, it was possible to load the JVM before the main program, and thus the JVM that was used had no classpath or knowledge of GigaSpaces whatsoever.
    The fix is to always have a static constructor on any class that has static values. This is a known issue with C# and many people have suggested a change in the language specification to overcome this limitation.
  • CPPNET-45 – Write with modifiers is now exposed in .NET
  • CPPNET-40 – Fixed: Notifications were broken in CodeMesh wrappers – CPP code generation from Java Sources failed with a warning on NotifyDelegatorCB.
  • CPPNET-37 – PONO wrappers have been created for the GSIterator.
  • CPPNET-36 – PONO wrappers have been created for calls that utilize SQLQuery.
  • CPPNET-35 – PONO wrappers have been created for notifications – allows access to underlying CodeMesh configuration files.
  • CPPNET-31 – Fixed: The GsSerializer library forced several JvmSettings programmatically (including InitialHeapSize and MaximumHeapSize), so that they could not be set using the standard CodeMesh .NET configuration, or using CodeMesh environment variables.
  • CPPNET-23 – Fixed: Dates and times were not handled correctly between .NET and Java – for .NET users the time was correct, while it was five hours different for Java users. This was visible in the Space Browser.
  • CPPNET-20 – .NET metadata was stored on a per space basis – a test has been added to the test harness for this condition.
  • CPPNET-66 – Fixed: DateTime {De)Serialization wasn't correct at the millisecond level.
  • CPPNET-64 – Fixed: MatchCode based with Converter.getTemplateEntry didn't work properly.
  • CPPNET-61 – auto-generate is now supported in the GigaSpaces.Key attribute (like in the POJO).
  • CPPNET-59 – Fixed: An attempt to write two Entries of the same class, both with the same integer Key value, did not throw any exception.

Service Grid

  • SERVICEGRID-100 – Fixed: The fault detection handler for a provisioned Lookup Service did not default to discovery management, but used a declared (or default) fault detection handler.
  • SERVICEGRID-101 – Fixed: Checking for an associated Lookup Service was done incorrectly, it used the ServiceBeanContext instead of the AssociationDesc.
  • SERVICEGRID-102 – Fixed: The gs-ui.cmd did not process command-line arguments.
  • SERVICEGRID-105 – Fixed: Declared Watches were not terminated.
  • SERVICEGRID-108 – Fixed: Declarative Watches did not have SLAPolicyHandelers associated with them.
  • SERVICEGRID-109 – Fixed: AssociationManagement didn't inject discovered associations in startup.
  • SERVICEGRID-110 – Fixed: The windows.xml override declared FlatlineMonitor incorrectly.
  • SERVICEGRID-111 – Fixed: If exceptions are raised during bean lifecycle methods – started() and initilaized(), they were not propagated.
  • SERVICEGRID-112 – Fixed: The ThresholdManager incorrectly reported a Threshold.CLEARED transition.
  • SERVICEGRID-114 – Webster check for leading / in the file name.
  • SERVICEGRID-115 – Allowed the processing of java.util.logging.config.file in an override. The LogManager must reload the supplied configuration.
  • SERVICEGRID-117 – GSMControl check for file codebase potential NullPointerException.
  • SERVICEGRID-119 – Service classloader is now set for Spring.
  • SERVICEGRID-131 – Changed usage of the toURI() method to be JDK 1.4 compliant.
  • SERVICEGRID-132 – In CLI, the option to automatically deploy a GSM has been added.
  • SERVICEGRID-135 – Fixed: Memory SLA broken due to incorrect used memory calculation.
  • SERVICEGRID-138 – The Configuration dialog in the Service Grid UI has been renamed to Deployment Descriptor Generator.
  • SERVICEGRID-203 – The gs Windows script now uses the -Xms -Xmx VM parameters declared in the setenv script.
  • SERVICEGRID-202 – Fixed: The GSC leaked ServiceBean ThreadGroups as a result of deploying and undeploying services to the GSC.
  • SERVICEGRID-200 – Fixed: Running the Service Grid from a different directory than <Service Grid Root>/bin threw a spring overrides not found exception (FileNotFoundException).
  • SERVICEGRID-187 – Fixed: The gs-focalserver script did not work on JDK 1.4.
  • SERVICEGRID-186 – Fixed: In the Space view of the Service Grid, a semi-dynamic clusterd space with the partitioned-sync2backup topology could not be created, because the lookup finder could not find it before the timeout was over.
  • SERVICEGRID-182 – Fixed: The ServiceLauncher in the Service Grid UI did not have JMX/XML jars in the classpath in the properties tab.
  • SERVICEGRID-176 – The gs.cmd script now includes JMX jar files.
  • SERVICEGRID-174 – Fixed: When executing the gsc and gsm commands from the shell prompt, an exception occurred and the action failed.
  • SERVICEGRID-173 – The FocalServer incorrectly calls start on the Space Mbean.
  • SERVICEGRID-163 – Fixed: The Service Grid UI didn't apply the lookup locators and groups defined by the setenv script. The Discovery Group Selection and the Locator Discovery failed to open.
  • SERVICEGRID-155 – Spring is now a default platform. Spring is deployed directly to the Service Grid.
  • SERVICEGRID-144 – Fixed: When using multiple partitions, a clustered space was built using different opstrings. The un-deployment of one of the opstrings mistakenly resulted in the shutdown of all of the partitions.
  • SERVICEGRID-140 – Fixed: Sometimes Service Grid events were received by some listeners – changes to BasicEventConsumer fixed this problem by removing the usage of WeakReferences.
  • SERVICEGRID-136 – Deployment Wizard validation improvements:
    • The default value in the Initial Instance count and Maximum instance count areas has been changed to 1 when deploying a Proactive Space.
    • When deploying a non-clustered space, a value larger than 1 in the Initial Instance count area is not allowed.
  • SERVICEGRID-130 – Fixed: The GSC (gsc.cmd) didn't start as a result of a JMX problem – a NoClassDefFoundError was thrown.
  • SERVICEGRID-116 – Fixed: Components related to starting the JMS service in the Service Grid required classes loaded in the application class loader – the build script was changed to include JMS classes in the JSpaces-dl.jar file.
  • SERVICEGRID-113 – The declaration of associations now includes the affinity of the service associations, i.e whether the service is collocated or not, taking into account the location of the respective services. The following association types were defined to provide this capability:
    • Collocated – a collocated service requires that A be collocated with B in the same JVM. If B does not exist, or cannot be located, A shall not be created without B.
    • Opposed – An association which requires that A exist in a different JVM then B.
  • SERVICEGRID-106 – The LookupLocator has been added to the Service Grid UI – provides the ability to add a lookup locator to the running UI.
  • SERVICEGRID-209 – The following logging levels have been added to gs_logging.properties:
    • Sevice Grid default logging:
      • org.jini.rio.level = INFO
      • com.gigaspaces.start.level = INFO
      • com.gigaspaces.grid.space.GigaSpacesFaultDetectionHandler.level=INFO
    • GSC logging:
      • com.gigaspaces.grid.gsc.level = FINE
      • org.jini.rio.cybernode.level = FINE
    • GSM logging:
      • org.jini.rio.monitor.level = FINE
  • SERVICEGRID-207 – Fixed: The GSM sometimes threw a ConcurrentModification exception when serializing ClassBundle.
  • SERVICEGRID-206 – Fixed: The GSC leaked one instance of the ServiceClassLoader for each instance of the service, deployed and then undeployed.
  • SERVICEGRID-177 – The spring-platform.xml override has been added to the gsc.cmd script by default.

Known Issues

Core

  • Exclusive Read Lock is supported in the proxy level and not in the method level.
  • The Hibernate CacheLoader implementation doesn't support lazy fetching, because the hibernate session is closed after each operation.
  • Using the QueryProcessor on IBM JVM 1.4.1 and calling clean()/restart()/close() might cause a deadlock in the network module.
    Workaround:
  • The QueryProcessor is now disabled.
  • Moved from NIO to RMI.
  • Since smart stubs have been introduced in this version, what used to be over-the-network communication between two collocated services (two services running in the same JVM), has become in-memory communication. This means that currently communication between two services results in the fact that they both share the same data – a change in one service is carried out on the other service as well. This change also results in performance and memory improvements.

    In the context of the space, two replicated spaces running in the same JVM share the same data, meaning they hold references to the same Entry fields. Therefore, changes to field values (field values that are not mutable only) affects both spaces. For example, changes made to the replication input filter in the target space result in data changes in the source space.

    If you need to make such a change, the way to overcome this limitation is to firsly copy the data, and only the make the change.
  • Embedded HSQL is not set with 500 connections:
    <init_sa_connections>10</init_sa_connections>
    <max_sa_connections>20</max_sa_connections>
  • Mirror does not reconnect after connection failure.
  • A lease inside a partitioned topology only acts on a single proxy, and not with a cluster proxy.
  • XATransaction with two single spaces doesn't work.
  • LB PrimaryBackup – TransactedException is thrown when writing under a new transaction after killing a primary space which used an old transaction.
  • FIFO between transactions is not supported.
  • An OutOfMemory exception might be thrown after performing a clear operation on a large quantity of Entries in a sync-replicated cluster.

Configuration and Tools

  • A space running GigaSpaces version 5.1 cannot be connected with a 5.2 proxy/browser/client (this occurs because the proxies have been consolidated and the stubs and exporter have been changed completely).
  • The space shutdown process still keeps threads and static references.
  • JCA rar is not part of the product.
  • An embedded Jini lookup service running inside a Webshpere 5.1 throws an exception.
  • The securityfilter example does not work with JMX.
  • Common logging has not been removed from the product yet.
  • Two MBeanServers running on the same machine are not supported.
  • The Spaces MBeans can not bind on an external FocalServer.
  • Deprecated CLI (not Service Grid CLI) operations do not support multicast using -groups etc. Also, passing * for multicast throws an exception. Use Service Grid CLI space operations instead.
  • Service Grid UI or Space Browser under Linux are very slow.
  • No support when a lookup service is not available, and an embedded space is started in the Service Grid Spaces View. The lookup service is not discovered nor registered anywhere.
  • update/updateMultiple with the ONE_WAY modifier are not supported. Use the -Dcom.gs.onewayupdate=true system property instead.
  • PrimaryElection requires a lookup service to be running in the network or embedded in the space. If multicast is not available, the spaceFinderURL should contain unicast lookup locators, where the lookup services communicate with each other via unicast discovery. For more details, refer to the Distributed Unicast Based Lookup Service Support section.
  • PrimaryElection used in the partitioned_sync2backup cluster must have a lookup service available. It does not run in the Service Grid UI if no GSM is up. This means that a lookup service must be available, otherwise the failover which is based on ActiveElection (based on a lookup service) does not work. For example, this occurs in the partitioned_sync2backup schema.
  • Most space operations (clean, shutdown etc.) are not supported using JDK 1.4.1. These are supported using IBM 1.4.2.
  • Notify for a POJO using a null template (as a new Object()) doesn't work.
    Workaround: pass a null.
  • Deprecated CLI (not the Service Grid CLI) operations do not support multicast using -groups etc. Also, passing * for multicast throws an exception. Use Service Grid CLI space operations instead.
  • Service Grid UI or the Space Browser under Linux are very slow.
  • LookupFinder bug – client sometimes connects to a space with the same name in a different Jini group: This occurs when there are two spaces with the same name (different container), each is a member of one shared Jini group and one unique one, and there are only three lookup services up, each registered for only one Jini group of the three (the two unique and the shared). If you use SpaceFinder.find() for the space with the shared group, and then look for the space with one of the unique groups, while less than a minute passed between the finds – in the second find, you can get a proxy to the wrong space.

    The reason for this problem is that in the LookupFinder class, there is a LookupFinalize thread cleaning the lookupCache. This thread has a 1 minute sleep between the loops, in case you perform two finds with less than a minute between them. The new group is concatenated to the previous, and if the first was the shared one, there is a chance that you will be directed to the lookup service of the shared group, and from there to the wrong space.

Space Browser

  • The Space Browser Spaces view network table does not support secured spaces.
  • Starting the Space Browser takes few minutes when using specifically JDK 1.5_09 on Windows.
  • A mirror space cannot be created in the Space Browser. You can load an embedded mirror space.
  • Creating a static cluster members XML file through the Cluster Wizard does not create a member-url with groups and locators. (This occurs only when pressing finish in the first Cluster Wizard panel).
  • The Space Network View doesn't support displaying secured spaces. Secured spaces are not added to table.
    After login is performed to a clustered secured space, the cluster node is not added to Space Browser container tree.
  • Running a benchmark on a secured space in a cluster throws a SpaceSecurityException (for a working clustered proxy). The same exception is thrown in a secured space, when attempting to inspect an object in the Query view.

POJO and Spring

  • POJO classes should include imports/references to the JSpaces classes when running the Service Grid, even though they both use different class loaders.
  • POJO with Externalizable using ClusteredProxy is not supported.
  • IProcedure returns Entry and not POJOs.
  • POJOs with FIFO in the instance level – you can only define FIFO in the class type level (annotation), and not on in the method level, where you can dynamically change this behavior at runtime.
  • POJOs with TimeToLive in the instance level – same as with FIFO, but with TTL.
  • CacheStore/CacheLoader with POJOs using the new @SpaceRouting annotation – since the persistency layer uses the first index as a primary key, and since the @SpaceRouting annotation is a partition key, a mismatch occurs. This will be fixed in future versions, however, currently to use CS/CL/Mirror service, default to a 5.1 type of solution.
    This limitation exists only when using the CacheStore/CacheLoader with POJOs, using the new @SpaceRouting annotation.
  • POJO/Entry - ClassLoader issues – since Entry and POJOs keep the meta data tables without the class loader.
  • POJO classes should be placed in the Service Grid common class loader.
  • Spring transaction timeout depends on the lease timeout.
  • A notification for a POJO using a null template (as a new Object()) doesn't work. As a workaround, pass a null.
  • When using the NotfiyDelegator with ExternalEntry objects, and wanting to get the ExternalEntry objects from EntryArrivedRemoteEvent, use the getExternalEntry() method instead of the getObject() method.
  • When using the NotfiyDelegator with ExternalEntry objects, and trying to get the ExternalEntry objects from EntryArrivedRemoteEvent, you need to use the getExternalEntry() method instead of the getObject() method.

JMS

  • JMS MDBs are not part of the product and have not been tested (these haven't been tested in version 5.1 either).
  • JMS transaction example throws a NullPointerException (only if you are using *version 5.2 R.C – resolved in 5.2 G.A).

Service Grid

  • The Service Grid JDBCStorageAdapter can't be loaded via a codebase (only if you are using *version 5.2 R.C – resolved in 5.2 G.A).
  • Service relocation issues in the Service Grid.
  • By default, the Service Grid uses a GigaSpacesFaultDetectionHandler, that allows you to determine the reachability of the GigaSpaces service.
    If the space is stopped, the fault detection handler detects a service as unreachable, and as a result attempts to create another service instance.
  • Wide cluster deployment (instantiation) problem – the Lookup Service is overloaded and cannot respond to ActiveElectionManager requests.
  • Spaces View – network list is not refreshed when viewing it via the Service Grid UI (this does not occur in the Space Browser).
  • A Service Grid windows shell for the FocalServer is missing (only if you are using version 5.2 R.C – resolved in 5.2 G.A).
  • GS-1247 – SBA issues with current architecture – failover does not work while GSC shuts down. The problem was caused by the new service load-balancing, namely the LeastActiveSelector. The problem is rooted in its base class, which caused references to stale GSC proxies. These stale proxies causes errors when the GSM attempts to deploy any services. This was fixed by overriding the super class behavior in the LeastActiveSelector to prevent stale references.

    A workaround for this problem is to revert back to the behavior in 5.1. This can be achieved by editing the services.config file – simply remove or comment out the following line:
    serviceResourceSelector = new org.jini.rio.monitor.LeastActiveSelector();

End of Life Notice

  • The .NET GenericSerializer doesn't exist anymore.
  • IJSpace doesn't include the content() API anymore.
  • ServiceGridLauncher doesn't exist anymore.
  • The .NET addNewAssembly isn't used anymore: The system automatically determines which assembly is required.
  • The partition.getContainer().getClusteredSpace(partition.getName(), false) method returns a relevant proxy to the end-user – an embedded proxy if the client is running in the same VM with the space, and a remote proxy if the proxy and the server are not running in the same VM. This means you do not need to define the boolean field as part of this method – the relevant proxy is returned in any case. This method will be deprecated in future versions.

Labels

 
(None)