Release Notes
Software Release 2.3.0 June 2017
Two-Second Advantage®
Important Information
SOME TIBCO SOFTWARE EMBEDS OR BUNDLES OTHER TIBCO SOFTWARE. USE OF SUCH EMBEDDED OR BUNDLED TIBCO SOFTWARE IS SOLELY TO ENABLE THE FUNCTIONALITY (OR PROVIDE LIMITED ADD-ON FUNCTIONALITY) OF THE LICENSED TIBCO SOFTWARE. THE EMBEDDED OR BUNDLED SOFTWARE IS NOT LICENSED TO BE USED OR ACCESSED BY ANY OTHER TIBCO SOFTWARE OR FOR ANY OTHER PURPOSE.
USE OF TIBCO SOFTWARE AND THIS DOCUMENT IS SUBJECT TO THE TERMS AND CONDITIONS OF A LICENSE AGREEMENT FOUND IN EITHER A SEPARATELY EXECUTED SOFTWARE LICENSE AGREEMENT, OR, IF THERE IS NO SUCH SEPARATE AGREEMENT, THE CLICKWRAP END USER LICENSE AGREEMENT WHICH IS DISPLAYED DURING DOWNLOAD OR INSTALLATION OF THE SOFTWARE (AND WHICH IS DUPLICATED IN THE LICENSE FILE) OR IF THERE IS NO SUCH SOFTWARE LICENSE AGREEMENT OR CLICKWRAP END USER LICENSE AGREEMENT, THE LICENSE(S) LOCATED IN THE “LICENSE” FILE(S) OF THE
SOFTWARE. USE OF THIS DOCUMENT IS SUBJECT TO THOSE TERMS AND CONDITIONS, AND YOUR USE HEREOF SHALL CONSTITUTE ACCEPTANCE OF AND AN AGREEMENT TO BE BOUND BY THE SAME.
This document contains confidential information that is subject to U.S. and international copyright laws and treaties. No part of this document may be reproduced in any form without the written
authorization of TIBCO Software Inc.
TIBCO, Two-Second Advantage, The Power of Now, TIB, Information Bus, Rendezvous, TIBCO Rendezvous, and Messaging Appliance are either registered trademarks or trademarks of TIBCO Software Inc. in the United States and/or other countries.
Enterprise Java Beans (EJB), Java Platform Enterprise Edition (Java EE), Java 2 Platform Enterprise Edition (J2EE), and all Java-based trademarks and logos are trademarks or registered trademarks of Oracle Corporation in the U.S. and other countries.
All other product and company names and marks mentioned in this document are the property of their respective owners and are mentioned for identification purposes only.
THIS SOFTWARE MAY BE AVAILABLE ON MULTIPLE OPERATING SYSTEMS. HOWEVER, NOT ALL OPERATING SYSTEM PLATFORMS FOR A SPECIFIC SOFTWARE VERSION ARE RELEASED AT THE SAME TIME. SEE THE README FILE FOR THE AVAILABILITY OF THIS SOFTWARE VERSION ON A SPECIFIC OPERATING SYSTEM PLATFORM.
THIS DOCUMENT IS PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
THIS DOCUMENT COULD INCLUDE TECHNICAL INACCURACIES OR TYPOGRAPHICAL ERRORS. CHANGES ARE PERIODICALLY ADDED TO THE INFORMATION HEREIN; THESE CHANGES WILL BE INCORPORATED IN NEW EDITIONS OF THIS DOCUMENT. TIBCO SOFTWARE INC. MAY MAKE IMPROVEMENTS AND/OR CHANGES IN THE PRODUCT(S) AND/OR THE PROGRAM(S) DESCRIBED IN THIS DOCUMENT AT ANY TIME.
THE CONTENTS OF THIS DOCUMENT MAY BE MODIFIED AND/OR QUALIFIED, DIRECTLY OR INDIRECTLY, BY OTHER DOCUMENTATION WHICH ACCOMPANIES THIS SOFTWARE,
INCLUDING BUT NOT LIMITED TO ANY RELEASE NOTES AND "READ ME" FILES.
Copyright © 1997 - 2017 TIBCO Software Inc. ALL RIGHTS RESERVED.
TIBCO Software Inc. Confidential Information
Contents
TIBCO Documentation and Support Services. . . .4
Release Notes. . . . 5
New Features. . . .6
Version 2.3.0. . . .6
Version 2.2.1. . . .7
Version 2.2.0. . . .7
Version 2.1.6. . . .8
Version 2.1.5. . . .9
Version 2.1.4. . . .11
Version 2.1.3. . . .13
Version 2.1.2. . . .15
Version 2.1.1. . . .15
Changes in Functionality. . . .17
Version 2.3.0. . . .17
Version 2.2.1. . . .17
Version 2.2.0. . . .17
Version 2.1.6. . . .17
Version 2.1.5. . . .18
Version 2.1.4. . . .21
Version 2.1.3. . . .22
Version 2.1.2. . . .25
Version 2.1.1. . . .26
Deprecated and Removed Features. . . .31
Migration and Compatibility. . . .33
Closed Issues . . . .34
Known Issues. . . .57
TIBCO Documentation and Support Services
Documentation for this and other TIBCO products is available on the TIBCO Documentation site. This site is updated more frequently than any documentation that might be included with the product. To ensure that you are accessing the latest available help topics, visit:
https://docs.tibco.com
Product-Specific Documentation
Documentation for TIBCO products is not bundled with the software. Instead, it is available on the TIBCO Documentation site. To directly access documentation for this product, double-click the following file:
TIBCO_HOME/release_notes/TIB_activespaces_version_docinfo.html where TIBCO_HOME is the top-level directory in which TIBCO products are installed. On Windows, the default TIBCO_HOME is C:\tibco. On UNIX systems, the default TIBCO_HOME is /opt/tibco.
The following documents for this product can be found on the TIBCO Documentation site:
● TIBCO ActiveSpaces® Installation
● TIBCO ActiveSpaces® Administration
● TIBCO ActiveSpaces® Monitoring and Management Console Guide
● TIBCO ActiveSpaces® Developer's Guide
● TIBCO ActiveSpaces® C API Reference
● TIBCO ActiveSpaces® Java API Reference
● TIBCO ActiveSpaces® .NET API Reference
● TIBCO ActiveSpaces® Release Notes How to Contact TIBCO Support
For comments or problems with this manual or the software it addresses, contact TIBCO Support:
● For an overview of TIBCO Support, and information about getting started with TIBCO Support, visit this site:
http://www.tibco.com/services/support
● If you already have a valid maintenance or support contract, visit this site:
https://support.tibco.com
Entry to this site requires a user name and password. If you do not have a user name, you can request one.
How to Join TIBCO Community
TIBCO Community is an online destination for TIBCO customers, partners, and resident experts. It is a place to share and access the collective experience of the TIBCO community. TIBCO Community offers forums, blogs, and access to a variety of resources. To register, go to the following web address:
https://community.tibco.com
Release Notes
Check the TIBCO Product Support web site at https://support.tibco.com for product information that was not available at release time.
Entry to this site requires a username and password. If you do not have a username, you can request one. You must have a valid maintenance or support contract to use this site.
New Features
This section lists the new features added in every release of the product.
Version 2.3.0
The following new features have been added to TIBCO ActiveSpaces version 2.3.0.
The as-admin Command
Support for Listing Running Queries
ActiveSpaces now supports the ability to list running queries by using the following command in the
as-admin utility:
show query state 'running'
Support for Cancelling a Query
ActiveSpaces now supports the ability to cancel a running query by using the following command in the as-admin utility:
abort query space <space_name>
Support for Filters in the as-admin Command
The show member and show members commands support the following filters:
● member_name
● member_id
● process_name
● process_id
Shared-Nothing Files Clean Up
The old or unused shared-nothing files were not deleted automatically on starting or shutting down a cluster. In this release, you can delete or cleanup such files from the datastore using the new cleanup datastore command from theas-admin utility.
Space Operations
Retrieve a Subset of the Fields in a Space
The GET or QUERY activity can now retrieve only a specific subset of the fields in a space rather than retrieving all the fields from the space.
Support for Filters in GET, LOCK, TAKE, and PUT Operations The filter attribute is added to the following:
● GetOptions
● PutOptions
● TakeOptions
● LockOptions
Update a Specific Field in a Tuple Without Using a GET Operation
The update() method can now update the space with a specific field without using a operation.
● Space.update(String filter)
● Space.update(Tuple key, Tuple value)
● Space.update(Tuple key, Tuple value, PutOptions options)
Remote Client
You Can Control the Proxies That Connect to the Remote Client
You can now specify the number of proxies that get connected to the remote client. The syntax for remote discovery supports the num_connections attribute. For example, tcp://
127.0.0.1:50000;127.0.0.1:51000?remote=true&num_connections=2 .
Version 2.2.1
There are no new features in this release.
Version 2.2.0
The following new features have been added to TIBCO ActiveSpaces version 2.2.0.
Support for Cross-Site Replication
ActiveSpaces now supports replicating transactions and PUT and TAKE operations for all spaces of a metaspace to another metaspace at a different geographical location.
Option to Redirect the Output of as-admin Commands to a Log File
The output of the as-admin commands can be now redirected to a file. You can use the following command line option to as-admin:
-output <filename>
When -output <filename> is entered on the command line when starting as-admin, the specified file is opened and as-admin commands and command results are logged to the file. When -output
<filename> is used in conjunction with the -input <script_file> command line parameter, the script file commands are also redirected to the output log file as they are executed by as-admin. Option for Recovery from Shared-Nothing Files
Recovery now supports a new recovery policy called force_load. Recovering with this option will start data recovery immediately even if there might be data loss. Using this option ignores all checks for required hosts/seeders and fast load is not attempted. This option is useful when changing member or host names. It is also useful when you want to force ActiveSpaces to use old persistence files. Note that the data store directory and file names must be manually renamed to reflect new host (and member) names before attempting a recovery with this policy.
as-admin Command to Clear the Contents of a Space
Added the following command to as-admin which can be used to clear the entire contents of a space or remove content that matches a criteria specified in <filter_string> :
clear space <space_name> [filter <filter_string>]
Enhanced Logging of Commands and their Output at Runtime
The following new commands were added to as-admin to enhance the ability to log commands and their output to a file at runtime:
● admin_log [<string>] [append]
● admin_log close
● console on
● console off
The console on and console off commands toggle between whether or not the results of as-admin commands are displayed on the screen. For the console off command, the as-admin commands are displayed but their results are not. The admin_log command opens a stream to redirect the output of
as-admin into a log file. If you do not specify the <string> for the log file name, any previous log file name, from -output command line option or previous calls to admin_log, will be used. If there wasn’t a previous log file name, the default name of as-admin.log will be used. If the log file name does not contain a path, the log file is opened in the current directory.
Support for Customized Configurations of the ASMM Datastore
You can now customize the configurations of the ASMM datastore with the help of the following properties:
● derby.system.home : helps you override the home directory of the embedded Derby DB Home.
● asmm.config.xml : Helps you override the default folder for the config.xml installed under ASMM.
For example,
java -Dderby.system.home=/myhome//asmm.conf -Dasmm.config.xml=/myhome/asmm.conf/
config.xml -jar asmm.jar
Version 2.1.6
The following new features have been added to TIBCO ActiveSpaces version 2.1.6.
An API to Provide Additional Information about User Queries
This version introduces the ExplainQuery API to give more information about the cost of execution of a query on each member.
The output of explain query shows the index used, if any. If so, it provides an estimated number of entries to be evaluated. If there is no index used, a table scan is needed; this will be a costly operation as every entry on that member is evaluated. From the output, you can gauge execution cost of the query based on the number of estimated entries to be evaluated.
Added Support for –autojoin.role to the Command-line Options of as-agent.
By specifying -autojoin.role “leech”, as–agent can now be started in such a manner that it will automatically join all spaces as a leech and not as a seeder. This is useful when starting instances of
as-agent which act solely as proxies for remote clients.
Support for Sorting with Snapshot and Prefetch ALL
ActiveSpaces now supports sorting with Snapshot and Prefetch ALL, in both ascending and descending order.
Enhanced Form of Recovering Data in the Fast Recovery Mode
Fast recovery is now possible if the cluster restarts with more members than what were available previously at shutdown time.
LDAP Search Using a Dedicated User
ActiveSpaces now supports LDAP searches using a dedicated user instead of an anonymous login.
Queries in the JDBC Driver Sample supports the LIKE Operator
The clause of the query in the JDBC Driver sample supports the operator.
C API to compare two tuples
With this version, there is a C API to compare two tuples
Version 2.1.5
The following new features have been added to TIBCO ActiveSpaces version 2.1.5.
Alternative Memory Manager for Linux 64-bit
The Hoard memory manager is offered for the Linux 64-bit platform as an alternative to the operating system's native memory manager for use with ActiveSpaces. Using Hoard over the native manager can reduce memory fragmentation. Detailed information about Hoard can be found at http://
www.hoard.org
To enable the Hoard memory manager, set the environment variable LD_PRELOAD to point to
libhoard.so in the ActiveSpaces /lib directory. With the a Bash shell, issue the following command to do this:
export LD_PRELOAD=$AS_HOME/lib/libhoard.so
Space Clear
The clear function efficiently deletes all of the tuples or a subset of tuples in the space. A filter can be passed into the clear function to define the subset of tuples to erase.
The following methods have been added to the Java API to support the clear function:
● Space.clear()
● Space.clear(String filter)
In the C API, the following function has been added to support space clear:
● tibasSpace_Clear()
In the .NET API, the equivalent functions are as follows:
● void Clear()
● void Clear(string filter)
The clear function is best effort, meaning that if a tuple is locked or in a transaction by another process or thread, that tuple will not be deleted.
Listeners and Persisters used for shared-all persistence are not notified of deleted tuples to ensure that deletion is as efficient as possible. Shared-nothing persistence however is updated to reflect the deletions.
Fault Tolerant Remote Client
Fault Tolerant Remote Client allows for a remote client to specify multiple proxies so that they are not impacted by failure of a single proxy and can load balance operations across them.
Discovery URL
The syntax for the discovery URL is the same as that for unicast discovery with multiple discovery nodes, with the suffix "?remote=true".
For example,
tcp://localhost:50000;localhost:50001?remote=true
Usage of Listen URL for Remote Client Connections
It is now possible to use the regular listen port for remote client connections. The remote listen option is not removed, because it might be needed where the ActiveSpaces servers have a dual IP configuration.
This is where the “private” IP is used for intra-server communication only and the “public” IP is available for the remote clients to connect to the metaspace.
Fault Tolerance
For detailed information on how fault tolerance works, see the TIBCO ActiveSpaces Developer’s Guide.
New Redistribution Protocol
The redistribution protocol has been revised to address high latency spikes observed for operations during redistribution. The previous protocol worked by timesharing between redistribution and user operations. If an operation was initiated during the redistribution period, the time sharing technique would cause exceedingly higher than normal latency.
The new protocol works by allowing redistribution and user operations to work concurrently to avoid latency spikes. As a trade-off to minimize its impact to user operation, the total time to redistribute the same amount of data may be higher than before.
New ActiveSpaces Monitoring and Management Utility
ActiveSpaces Version 2.1.5 provides a new version of the ActiveSpaces Monitoring and Management Utility (ASMM). ASMM lets you connect to one or more metaspaces and display information about the metaspaces, metaspace members, and connected spaces. Monitoring information includes detailed statistics about members and spaces and performance graphs for space operations.
The GUI for ASMM has been completely redesigned. There are now two monitoring interfaces: the Admin Interface and the Console Interface. The Admin Interface lets you set up connections to metaspaces and configure services. The Console Interface provides new monitoring capabilities and new Activity Monitors that provide enhanced monitoring of your ActiveSpaces Installation.
Sorted Browsers
ActiveSpaces Version 2.1.5 provides the ability to sort queries that are made using browsers.
The sorting feature is implemented in the filter that is used for specifying a browser query. The filter can now use “order by” statements.
There is no API change. The order by is part of the filter. It is similar to the method used with SQL.
The following are examples of “order by” statements in filters:
● order by key
● id < 100 order by id
● id = 5 and key < 100 order by key
● id < 10 order by id, key
Note the following points:
Syntax
<query> order by <field1>, <field2>, . . . needs to be added to the end of the filter.
There is no limit on the number of fields a user can have.
Requirements
A TREE index with fields is used in order by section. The index can be a, b, c and where the order by is performed a, b.
If the index has more than one field and order by is executed only on one field, the sorting will work
If the order by cannot be satisfied due to requirements 1 or 2 as stated above, then an exception is thrown.
Change in Behavior
Index selection for queries is dictated by the use of order by in the filter. The use of order by in a query filter can override the indices that would normally be used by the query.
Consider the following query:
key<10 order by id
If the user has an index on “key” and another index on “id,” ActiveSpaces will pick the index on “id”
over the index on “key” and perform a table scan to validate “key<10."
Changed Parameters for set file_log Command
The parameters have been changed to the as-admin set file_log command as follows. The command now supports the following log file options:
log_limit <limit> default -1 (no limit) log_count <count> default 1
log_append <boolean> default true Support for OpenSSL 1.0.1j
ActiveSpaces Version 2.1.5 supports OpenSSL 1.0.1j and loads OpenSSL at runtime using dynamic load.
Version 2.1.4
The following new features have been added to TIBCO ActiveSpaces version 2.1.4.
New Cluster Membership Options
New options have been added to provide you with greater stability when network issues occur that could result in an outage. These options apply to cluster members only; remote clients will try to re- establish the connection to the proxy in the background.
Changes in Group Membership Parameters
A new parameter has been added to the MemberDef object to specify how long ActiveSpaces waits for a member to reconnect if it loses connection to the metaspace.
Also, a new parameter has been added to the MemberDef object to specify the number of host
connections that can be lost before ActiveSpaces reacts to connectivity events by putting the cluster in a suspend state. When the cluster is in suspend state, members cannot join or leave the cluster. If the number of host connections is above the threshold, the cluster waits until the connectivity issue is fixed.
Once all cluster members are connected, the cluster continuous functioning as before.
In addition, new functions and methods have been added to support member timeout settings and suspend thresholds.
member_timeout Parameter
The member_timeout parameter specifies how many milliseconds ActiveSpaces waits for a member to reconnect if it loses connection to the metaspace. The default value is 30 seconds.
cluster_suspend_threshold Parameter
The cluster_suspend_threshold parameter specifies the number of host connections that can be lost before the cluster goes into a suspended state. When the cluster is suspended, members cannot leave
or join the cluster. If connectivity is lost for a seeder member of a space, doing a read/write for that space might cause a protocol timeout.
The default value is -1 (never suspend membership operations).
New Parameters for recover space
New parameters have been added to the as-admin recover space command to define:
● What recovery policy to use during recovery.
● Whether shared noting files are retained or removed after a successful recovery.
The recover space command now has the following format:
recover space <spacename> [recovery_policy <policy>] [quorum <integer>] [keep_files
<boolean>]
Recovery options
There are four recovery policies as part of the recovery options. When shared-nothing persistence is implemented and recovery is issued and the policy determines when and how recovery can be made.
The policy value can be:
● no_data
Recover the space without any data. This is the same as “recover space without data” in previous releases.
● data_loss
Recover the space with available data from each seeder. If recovery is done with missing seeders, there is a potential for data loss, because not all members are started to ensure that all data is recovered. This policy ensures best effort recovery with available data.
● no_data_loss
Recover the space only if there are enough members to be able to recover the data before shutdown. If there are not enough seeders to recover the previous state of the cluster, recovery throws an exception. This is the same as “recover space with data” in previous releases.
● exact_cluster
Recover the space only if all of the members that were active before the shutdown are available in the cluster. This policy enables fast recovery, which is explained in next section. If there are more or less cluster members than before the shutdown, recovery throws an exception.
The previous form of the command—recover space with data— is still supported, but will be deprecated.
Starting with release 2.1.4, the quorum attribute for recover space with data, which specifies the number of seeders required before ActiveSpaces initiates loading of the space when a recovery is done, is no longer required. However, you can still pass the quorum value with the recover command or in the recovery options in the API.
ActiveSpaces stores the seeder information in the shared-nothing persistence file, and uses the information at startup/restart to perform recovery (recover still needs to be issued manually using the API or as-admin).
Option to keep or discard files
The optional [keep_files <boolean>] parameter specifies whether persistence files are retained or deleted
By default, the keep_files parameter is set to false, which specifies that after a successful recovery, all old files along with shared-nothing files that have an .INVALID extension are removed. Any file that is not in ActiveSpaces name format is not removed.
If you specify true for the keep_files parameter, then all files are retained when the space is recovered.
Support for Fast Recovery
ActiveSpaces 2.1.4 provides a fast recovery mechanism that reduces the number of network hops and the time required for recovery when shared-nothing persistence is used.
For fast recovery to work correctly, users are not allowed to change the following SpaceDef properties:
● replication count
● eviction policy
● distribution policy
● distribution/key field
● host aware replication
ActiveSpaces performs fast recovery if all of the following conditions are met:
● The number of seeders brought back into the clusters equals the number of seeders that failed.
● The same set of seeders is present in the cluster (all seeder names are unchanged after the failure).
Fast recovery is only performed with shared-nothing persistence files created by ActiveSpaces 2.1.4 and later releases.
To provide information to the system administrator regarding fast recovery, the as-dump and as- convert utilities have been updated to display a list of the active seeders, and the current space definition (SpaceDef) for the space.
You provide a value defined in this enum when you call the tibas_SpaceRecover() function (C API) or the equivalent Java method in the Java API.
Change in Behavior When Ctrl+C Is Used
For the C language version of as-admin, CTRL+C is now used to exit as-admin at the completion of any command currently executing. It no longer immediately shuts down as-admin.
If it is necessary to abort execution of the C as-admin utility, you can enter the following commands:
● CTRL-\
● On UNIX, kill -9 <pid>
Support for OpenSSL 1.0.1h
ActiveSpaces version 2.1.4 supports OpenSSL 1.0.1h, and loads OpenSSL at runtime using dynamic load.
Version 2.1.3
The following new features have been added to TIBCO ActiveSpaces version 2.1.3.
Rolling Logs
ActiveSpaces 2.1.3 allows you to set up “rolling logs” so that ActiveSpaces logs do not fill up the host file system. Using this feature, you can specify that log files are rolled over to a new log file when a specified file size is reached. You can specify the log file size, the number of rolling log files allowed, whether to append logs to new files, and the log level to be used for each file.
New C Admin Commands
ActiveSpaces 2.1.3 includes a new C version of the as-admin utility—as-admin.exe.
This utility is located in the AS_HOME/bin directory and can be invoked by navigating to the /bin directory and entering:
as-admin
The C as-admin utility includes all of the commands that were provided with the Java as-admin utility.
In addition, the C Admin utility adds metaspace commands, space commands, admin routing
commands, logging commands, and miscellaneous commands. Also, it is now possible to execute C as- admin commands from a script file. For information on the new commands, see the TIBCO ActiveSpaces Administration document.
TIBCO ActiveSpaces Hawk Microagent
An ActiveSpaces managed application instrumented with the TIBCO Hawk Application Management Interface (AMI) protocol. The Hawk microagent exposes a set of methods that allow the connected metaspace to be monitored and controlled by TIBCO Hawk tools. The ActiveSpaces Hawk Microagent communicates with the TIBCO Hawk Agent by using TIBCO Rendezvous as the transport for
exchanges of monitored and management data to interact with the Metaspace.
For information on the ActiveSpaces Hawk Microagent, see the TIBCO ActiveSpaces Administration document.
Write-Behind Caching
ActiveSpaces 2.1.3 supports write-behind caching in addition to write-through caching to a back-end database. Write-behind caching provides asynchronous writes to the database for faster performance, and allows writes to be buffered in cache and written to the database later in case the database is down.
The writes to the database are asynchronous to the cache operation. The process is fault-tolerant of Persister failures and seeder failures of the space up to its replication degree.
Ability to Run as-agent as a Windows Service
ActiveSpaces 2.1.3 allows you to run as-agent as a Windows service. For information on this feature, see the ActiveSpaces Administration document.
ASMM Windows Service
ActiveSpaces 2.1.3 allows you to run the Management and Monitoring executable that is associated with ASMM as a Windows service. For information on this feature, see the ActiveSpaces Administration document.
System Performance Monitoring
ActiveSpaces 2.1.3 provides a system performance monitoring feature. You can monitor all members (as-agent, as-admin, and ASMM, and so on, and any client application using ActiveSpaces). For information on this feature, see the ActiveSpaces Administration document.
CURRENT Time Scope Setting for Browsers
When implementing browsers, you can now specify a CURRENT time scope setting. Specifying CURRENT allows client applications to create queries that return large result sets using less resources.
For information on implementing this feature, see the TIBCO ActiveSpaces Developer’s Guide.
Enhancements for ActiveSpaces Security
ActiveSpaces security now supports using authentication and identity parameters from admin scripts, the as-agent command line and API functions and methods, with secure metaspaces. For information on implementing this feature, see the TIBCO ActiveSpaces Developer’s Guide and the ActiveSpaces Administration document.
Version 2.1.2
The following new features have been added to TIBCO ActiveSpaces version 2.1.2.
ActiveSpaces Routing
Allows you to set up router nodes that send updates from one customer site using any transport mechanism; for example, TCP/IP or an Enterprise Messaging System (EMS).
The routing interface can also be a remote client connection from one site to another or an other transport mechanism that your application implements.
For detailed information on implementing the routing feature, see the Addendum for TIBCO ActiveSpaces 2.1.2 Add-on document.
Version 2.1.1
The following new features have been added to TIBCO ActiveSpaces version 2.1.1.
ActiveSpaces Security
ActiveSpaces now provides security features that allow you to set up a secure ActiveSpaces cluster. You can:
● Set up nodes as security domain controllers, which control security within a domain, or as security domain requestors, which request access to a metaspace controlled by a security domain controller.
● Use the ActiveSpaces Admin CLI and API sets to configure security settings by creating a security policy file.
● Enforce security by generating security token files and distributing them to security domain requesters that need to connect to specified metaspaces in the secure cluster.
● Implement user authentication using operating system authentication such as NTLM/Active Directory-Kerberos or UNIX/Linux Pluggable Authentication Modules (PAM) login; or you can use LDAP authentication.
● You can also use X509v3 authentication based on verification of the user’s X509 certificate against an LDAP user account using the Simple Authentication and Security Layer (SASL) framework.
● Use Access Control Lists (ACLs) to provide granular access control to metaspace/space objects and operations.
● Encrypt tuple data (except for key fields and indexes) both in memory and when persisted to local storage.
The ActiveSpaces 2.1.1 security feature is not supported with the ActiveSpaces Monitoring and Management (ASMM) interface.
For detailed information on ActiveSpaces security, see chapter 4 of the TIBCO ActiveSpaces Developer’s Guide, “Implementing ActiveSpaces Security.”
Affinity Feature
The Admin CLI and the ActiveSpaces API set now allow you to define tuple fields as distribution fields.
Rather than carrying out distribution based on the values of all of the key fields, affinity allows you to distribute only on a subset of the key fields. All of the records with equivalent values for their
distribution fields are seeded by the same node.
The define | create space command in the Admin CLI contains a new parameter, distribution def, which allows you to define distribution fields. Distribution fields must be already defined in the key for the space.
Two new functions have been added to each API set to set and get distribution fields.
Host-Aware Replication Feature
ActiveSpaces now allows you to run seeders in groups to help prevent the loss of replicated data. When groups are used, the data from the seeders in one group will always be replicated on seeders that are in other groups. If a device hosting the seeders in a group goes down, no data loss will occur as the replicated data is guaranteed not to reside on any of the seeders in that group.
Running seeders in groups to prevent the loss of replicated data is useful when:
● Several seeders reside on the same physical entity. For example, a computer or rack.
● Access to several seeders is through the same physical entity. For example, a network switch.
For detailed information on the feature, see Host-Aware Replication in the TIBCO ActiveSpaces Administration Guide.
Changes in Functionality
This section lists changes (if any) in functionality since the last major release of this product.
Version 2.3.0
The following changes in functionality have been added to TIBCO ActiveSpaces version 2.3.0.
Improvement in Handling Disk Write Failures
Improvements were made to the way ActiveSpaces handles failures when writing to a disk. The enhanced functionality enables ActiveSpaces to retry a failed attempt at writing to a disk by buffering them in the memory and trying again later.
Version 2.2.1
There are no new changes in functionality in this release.
Version 2.2.0
The following section describes the changes in functionality in version 2.2.0 of TIBCO ActiveSpaces.
Change in the Method Used in C Examples
The C examples now use the more secure fgets() method instead of the gets() method.
Output of the show space Command No Longer Contains Non-Printable Characters
The output of the show space <space_name> entries command of as-admin was modified so that printable characters from char fields are displayed as characters and non-printable characters are displayed as hexadecimal numbers.
Redundant Keyword in the alter space Command is Now Optional
The as-admin command alter space name <space_name> has been updated so that name is now optional.
ASOperations Example Updated to Take A Starting Key
The pm (put multiple) option of the ASOperations example was updated to take a starting key number which allows you to add additional entries instead of always overwriting existing entries.
Space.size() No Longer Performs a Linear Scan
When space.size() is called, the old functionality was to perform a linear scan on the index structure to report the size of the space. This behavior has been changed in this release. The default
implementation of this API now queries the space statistics to obtain the size. To revert to the old mechanism, the API could be invoked with a filter (space.size("")) which uses the linear scan.
Remember that the linear scan can take some time depending on the number of records.
There is no change in functionality when a valid filter is used in the call to space.size(<valid filter>). It still uses linear scan.
Message Displayed when a Signal is Used to Shutdown Processes
In as-agent.exe, as-router.exe, and Java as-agent, when a signal is used to shutdown the processes, a message indicating the shutdown is due to a signal is now output to stderr. Previously there was no indication that the processes were shutdown due to a signal.
Version 2.1.6
The following section describes the changes in functionality in version 2.1.6 of TIBCO ActiveSpaces.
Changes in Transactions
Transactions have a life cycle that is controlled by begin transaction and commit/rollback of the transaction. The outcome of a transactions is either all-commit or none.
If a transaction gets stuck, or a client application cannot be located, you can use the as-admin to rollback the transaction. This ensures that the entries that are involved in the transaction, rollback to their previous state, and are available for other clients to access.
However, if the client involved in the transaction continues with their operations, and choose to commit at a later stage, an exception is reported indicating that this transaction is already rolled-back by an external tool (as-admin here). To ensure that the outcome of the transaction is either all-
commit or none, when the client intends to commit that transaction, they are going to be rolled-back. If the client decides to rollback, there is no impact and no exception is thrown.
Improvements in the as-admin ‘show space’ Command
Improved the client latency statistics and redistribution percentage information displayed for the as- admin ‘show space’ command.
Changes in the C Version of the ASPerf Example
In the C version of the ASPerf example, asperf-agent.c was changed to ASPerfAgent.c and
asperf-agent.exewas changed to ASPerfAgent.exe. Changes in ASBatchOperations Example
The ASBatchOperations example was updated to be consistent amongst all of the APIs. The Java and .NET versions of the example now use a single level menu and the previous submenu was removed.
Version 2.1.5
The following section describes the changes in functionality in version 2.1.5 of TIBCO ActiveSpaces.
C Changes
New Invocable Parameter for Callback Functions Used with tibas_SetInvocable() and tibas_SetMemberInvocable()
A new Invocable parameter has been added to the callback functions that are passed by the user when calling tibas_SetInvocable() and tibas_SetMemberInvocable(). The name of the invocable is passed to the user function.
typedef void (TIBAS_CALL_API *tibas_invocable)(
tibasSpace space, tibasTuple tuple, tibasTuple context, tibasTuple result, const char* invocable);
typedef void (TIBAS_CALL_API *tibas_memberInvocable)(
tibasSpace space, tibasTuple context, tibasTuple result, const char* invocable);
Added:
● tibasRemoteMemberEvent_GetProxyMembers()
● tibasSpaceDefListener_CreateEx()
● tibasMember_Create ()
● tibasMemberList_Create ()
● tibasMetaspace_GetMemberDef()
● tibasMetaspace_GetRemoteListen ()
● tibasSpace_Clear()
● tibasMemberDef_GetContext()
● tibasSpaceDef_SetContext ()
● tibasMemberDef_GetContext ()
● tibasSpaceDef_GetVersionNum ()
● tibas_RemoveInvocable()
● tibas_RemoveMemberInvocable()
● tibasTuple_Compare() Changed:
● tibasAction_GetMetaspaceName()
The metaspaceName parameter type has been changed from char** to const char**.
● tibasAction_GetSpaceName ()
The spaceName parameter type has been changed from char** to const char**
● tibasError_GetMessage()
The message parameter type has been has been changed from char** to const char**
● tibasAction_GetStackTrace()
The stackTrace parameter type has been changed from char** to constchar**
● tibasSpaceEvent_GetMetaspaceName()
The metaspaceName parameter type has been changed from char** to constchar**
● tibasSpaceEvent_GetSpaceName()
The spaceName parameter type has been changed from char** to constchar**
● tibasSpaceMemberEvent_GetSpaceName ()
The spaceName parameter type has been changed from char** to constchar**
● tibasSpaceRemoteMemberEvent_GetSpaceName()
The spaceName parameter type has been changed from char** to constchar**
● tibasMember_GetName()
The memberName parameter type has been changed from char** to constchar**
● tibasMember_GetId()
The memberId parameter type has been changed from char** to constchar**
● tibasMember_GetHostAddress()
The hostAddress parameter type has been changed from char** to constchar**
● tibasMember_GetDistributionRole()
The spaceName parameter type has been changed from char* to const char*
● tibasMember_GetManagementRole()
The memberName parameter type has been changed from char** to constchar**
● tibasMember_GetName()
The memberName parameter type has been changed from char** to constchar**
● The tibasMetaspace_ReleaseTransaction()
The transactionId parameter type has been changed from char** to constchar**
● tibasMetaspace_TakeTransaction()
The transactionId parameter type has been changed from char** to constchar**
● tibasMemberDef_GetDiscovery()
The discovery parameter type has been changed from char** to constchar**
● tibasMemberDef_GetName()
The name parameter type has been changed from char** to constchar**
● tibasMemberDef_GetListen()
The listen parameter type has been changed from char** to constchar**
● tibasMemberDef_GetRemoteListen()
The remoteListen parameter type has been changed from char** to constchar**
● tibasMemberDef_GetRemoteDiscovery()
The remoteDiscovery parameter type has been changed from char** to const char**
● tibasPersister_Create()
A closure parameter has been added. This parameter is a pointer to closure data that is passed to the callback function when the persister is invoked.
● tibasSpace_GetName ()
The spaceName parameter type has been changed from char** to constchar**
● tibasSpace_GetMetaspaceName()
The metaspaceName parameter type has been changed from char** to constchar**
● tibasSpaceDef_GetName()
The spaceName parameter type has been changed from char** to constchar**
● tibasSpaceDef_GetIndexDef()
The indexName parameter type has been changed from char** to constchar**
● tibasSpaceDef_RemoveIndexDef()
The indexName parameter type has been changed from char** to constchar**
● tibasFieldDef_GetName()
The fieldName parameter type has been changed from char** to constchar**
● tibasKeyDef_Create()
The parameter type has been changed from to
The indexName and fieldNames parameters type have been changed from char** to constchar**
● tibasIndexDef_GetName()
The indexName parameter type has been changed from char** to constchar**
● tibasIndexDef_SetName()
The indexName parameter type has been changed from char** to constchar**
● tibasIndexDef_SetFieldNames()
The fieldNames parameter type has been changed from char** to constchar**
● tibasTuple_GetString()
The value parameter type has been changed from char** to constchar**
● tibasTuple_PutString()
The value parameter type has been changed from char** to const char**
● tibasTuple_Eval()
The filter parameter type has been changed from char** to const char**
Removed:
● tibasRemoteMemberEvent_GetProxyMember() Changes to the Example Code
The C examples have been updated for the HP-UX, AIX, and Solaris platforms to account for changes in the C API.
Version 2.1.4
The following section describes the changes in functionality in version 2.1.4 of TIBCO ActiveSpaces.
C Changes
The types.h file contains a new _tibasRecoveryPolicy enum that you use to set recovery options:
typedef enum _tibas_recoveryPolicy {
TIBAS_RECOVERY_NO_DATA = 0, TIBAS_RECOVERY_DATA_LOSS = 1, TIBAS_RECOVERY_NO_DATA_LOSS = 2, TIBAS_RECOVERY_EXACT_CLUSTER = 3 } tibas_recoveryPolicy;
Added:
● tibasMemberDef_SetMemberTimeout()
● tibasMemberDef_SetClusterSuspendThreshold()
● tibasMemberDef_GetMemberTimeout
● tibasMemberDef_GetClusterSuspendThreshold() Java Changes
Added:
● MemberDef setMemberTimeout(long timeout)
● long getMemberTimeout()
● MemberDef setClusterSuspendThreshold(int threshold)
● int getClusterSuspendThreshold()
Version 2.1.3
The following section describes the changes in functionality in version 2.1.3 of TIBCO ActiveSpaces.
● Batch Puts can now take a collection of PutOptions in case each Put requires a different configuration.
C Changes
A new _tibasFileLogOptions structure has been added to enable implementation of rolling log files:
struct _tibasFileLogOptions { const char* filePath;
tibas_logLevel level;
tibas_int limit;
tibas_int fileCount;
tibas_boolean append;
The tibas_timeScope structure has been changed to add a CURRENT time scope setting:
typedef enum _tibas_timeScope {
TIBAS_TIME_SCOPE_ALL = 0, TIBAS_TIME_SCOPE_SNAPSHOT = 1, TIBAS_TIME_SCOPE_NEW = 2, TIBAS_TIME_SCOPE_NEW_EVENTS = 3, TIBAS_TIME_SCOPE_CURRENT = 4 } tibas_timeScope;
Added:
● tibasMetaspace_CloseAll()
● tibasFileLogOptions_Initialize()
● tibas_EnableFileLoggingEx()
● tibasSpaceDef_IsHostAwareReplication()
● tibasSpaceDef_SetHostAwareReplication()
● tibasSpaceDef_GetPhaseRatio()
● tibasSpaceDef_SetPhaseRatio()
● tibasSpaceDef_GetQueryLimit()
● tibasSpaceDef_SetQueryLimit()
● tibasSpaceDef_GetFileSyncInterval()
● tibasSpaceDef_SetFileSyncInterval()
● tibasBrowserDef_SetQueryLimit()
● tibasBrowserDef_GetQueryLimit()
● tibasServices_ReportState()
● tibasServices_SignalStop()
● tibasServices_WaitForStop()
● tibasListenerDef_SetQueryLimit()
● tibasListenerDef_GetQueryLimit()
● tibasSpaceMemberDef_SetDataStore()
● tibasSpaceMemberDef_Free()
● tibasRouter_Create()
● tibasRouter_Free()
● tibas_DisableFileLogging()
● tibas_EnablePerformanceMonitor()
● tibas_IsEnablePerformanceMonitor()
● tibas_GetMetaspaceNames()
● tibasAction_GetMetaspaceName()
● tibasOp_GetTTL()
● tibasActionResult_SetFailedEx() Java Changes
● The BrowserDef.setRoute method now provides an option to enable or disable routing.
Added:
● MetaSpace.closeAll()
● ActionResult.SetFailed
● ASCommon.EnablePerformanceMonitor()
● FileLogOptions.getFile
● FileLogOptions.getLimit()
● FileLogOptions.set Append()
● FileLogOptions.isAppend()
● FileLogOptions.setLimit()
● SpaceDef.getPhaseCount()
● SpaceDef.setPhaseCount()
● SpaceDef.getPhaseInterval()
● SpaceDef.setPhaseInterval()
● setEnablePerformanceMonitor()
● SpaceDef.isHostAwareReplication()
● SpaceDef.setHostAwareReplication() .NET API Changes
Added:
● FileLogOptions.getFilePath()
● FileLogOptions.setFilePath()
● FileLogOptions.getFileCount()
● FileLogOptions.setFileCount()
● FileLogOptions.getLimit()
● FileLogOptions.setLimit()
● FileLogOptions.getAppend()
● FileLogOptions.setAppend()
● FileLogOptions.getLevel()
● FileLogOptions.setLevel()
● SpaceDef.getHostAwareReplication()
● SpaceDef.setHostAwareReplication()
● SpaceDef.getPhaseCount()
● SpaceDef.setPhaseCount()
● SpaceDef.getPhaseInterval()
● SpaceDef.setPhaseInterval() Admin Language Changes
The C as-admin interface has been introduced. The C as-admin includes all of the commands previously provided by the Java as-admin.
The following as-admin commands have been added with the C as-admin:
● execute on member
● execute on members
● execute on proxy
● open name listen
● close
● show metaspaces
● show space stats
● show system stats
● commit transaction
● rollback transaction
● show transactions
● join space
● leave space
● show space entries
● show space locks
● show space members
● show space size
● unlock space
● set event log
● set file log
● show console log
● show event log
● A show members [count] parameter has been added to the show members command.
● A show spaces [all] parameter has been added to the show spaces command.
Changes to the Example Code
The example JDBC Driver was updated to provide support for the following:
● transactions
● DatabaseMetaData
● PreparedStatements
● select count(*) from <table_name>
Version 2.1.2
The following section describes the changes in functionality in version 2.1.2 of TIBCO ActiveSpaces.
C Changes
The Put options and the Take options now have an extra boolean element—tibas_boolean route—
indicating whether a specified put or take operation should be routed.
struct _tibasPutOptions { tibas_long entryTTL;
tibas_long lockWait;
tibas_boolean lock;
tibas_boolean unlock;
tibas_boolean forget;
tibas_boolean route;
void* resultHandler;
void* closure;
};
struct _tibasTakeOptions { tibas_long lockWait;
tibas_boolean lock;
tibas_boolean unlock;
tibas_boolean forget;
tibas_boolean route;
void* resultHandler;
void* closure;
};
Added:
● tibasSpace_SetRouter()
● tibasSpaceDef_SetRouted()
● tibasRouter_Create()
● tibasRouter_Free() Deprecated:
● tibasSpaceDef_SetPersisted() Java Changes
A new Router interface has been added to support the ActiveSpaces routing feature. The Router interface is defined as follows:
public ActionResult onOpen (RouterOpenAction openAction);
public ActionResult onClose (RouterCloseAction closeAction);
public ActionResult onWrite (RouterWriteAction writeAction);
public ActionResult onAlter (RouterAlterAction alterAction);
Added:
● SetRouted()
● IsRouted()
● setRouter()
● stopRouter() .NET API Changes Added:
● Router.Router Router { set; }
● public abstract bool Routed { get; set; } (SpaceDef method, similar to setRouted)
Version 2.1.1
The following section describes the changes in functionality in version 2.1.1 of TIBCO ActiveSpaces.
Change in Default Nullable Setting for Space Fields
With release 2.1.1, the default setting for the as-admin Admin CLI command for defining fields with the
define | create space command or altering a space with the alter space command is “not nullable.”
In prior releases, the default value was nullable. The default setting for defining or altering fields using ActiveSpaces API calls remains “not nullable.”
C Changes
The signature of the tibasAdminExecute() function has been changed. The result parameter is now a pointer to a character buffer that ActiveSpaces allocates to hold the result string.
The new signature is:
tibasAdmin_Execute(tibasAdmin admin, char** result, tibasMetaspace metaspace, const char* cmd) New functions have been added to support the ActiveSpaces security feature and the affinity feature.
Change to Default timescope setting for Browser Definitions
The default timescope value for the BrowserDef object has been changed from ALL to SNAPSHOT.
Change to Default timescope setting for Listener Definitions
The default timescope value for the ListenerDef object has been changed to TIBAS_TIME_SCOPE_NEW_EVENTS.
Added:
● tibasMemberDef_GetSecurityPolicyFile()
● tibasMemberDef_GetSecurityTokenFile()
● tibasMemberDef_GetAuthenticationCallback()
● tibasMemberDef_SetSecurityTokenFile()
● tibasMemberDef_SetAuthenticationCallback()
● tibasFieldDef_IsEncrypted()
● tibasFieldDef_SetEncrypted()
● tibas_SetSecurityLogLevel()
● tibas_GetSecurityLogLevel()
● tibasSpaceDef_SetDistributionFields()
● tibasSpaceDef_GetDistributionFields()
● tibasMemberDef_SetDataStore()—new for the C API only
● tibasMemberDef_GetDataStore()—new for the C API only
● tibasSpace_GetMetaspace()
● tibasSpace_GetMetaspaceName() Changed:
● tibasAdminExecute()
● tibasInvokeResultList_GetResults() has been renamed to tibasInvokeResultList_GetReturns().
Java Changes Added:
● String MemberDef.getSecurityTokenFile()
● String MemberDef.getSecurityPolicyFile()
● AuthCallback MemberDef.getAuthenticationCallback()
● MemberDef MemberDef.setSecurityPolicyFile(String policyFile)
● MemberDef MemberDef.setSecurityTokenFile(String tokenFile)
● MemberDef MemberDef.setAuthenticationCallback();
● FieldDef.IsEncrypted()
● FieldDef.SetEncrypted()
● setDistributionFields()
● getDistributionFields()
● ASCommon.setSecurityLogLevel()
● ASCommon.getSecurityLogLevel() .NET API Changes
● FieldDef.Encrypted
● ASCommon.SecurityLogLevel
● SetDistributionFields
● GetDistributionFields
● MemberDef.DataStore Property
● ASSecurityException
● ASSecurityProvider class
● AuthenticationInfo class
● Abstract Credential class
● UserPwdCredential class
● X509V3Credential class
● AuthenticationCallback Interface Admin Language Changes
The following new commands have been added to support the ActiveSpaces security features:
● define | create security_policy
Creates a security policy file that is used to configure security settings for a security domain.
● define | create security_token
Creates a security token file that is deployed to requestor nodes that need to access a metaspace in a security domain controlled by a security domain controller.
● validate policy_file
Validates the syntax of a specified security policy file.
● validate token_file
Validates a specified security token file.
● validate truststore
Validates a specified security certificate file.
● The following commands have been changed:
● The connect command has a two new parameters to support connection as a security domain controller or a security domain requestor:
[security_token <string>] [security_policy <string>]
● The define | create space command has a new parameter to support index fields that set up distribution def fields:
distribution_def ('KEY','field0','field1','field2' ...)
Fields that are set up as distribution fields, will have their data stored on the same seeder if their field data is identical.
● The show | describe space command now indicates any fields that have been set up as distribution fields.
Changes to the Example Code
The following modifications have been made to the example code provided with TIBCO ActiveSpaces.
The following new security-related examples were added in this release:
● examples/c/security/ASDomainController.c
● examples/c/security/ASUserAuthenticator.c
● examples/dotnet/security/ASDomainController.cs
● examples/dotnet/security/ASUserAuthenticator.cs
● examples/java/security/ASUserAuthenticator.java
For documentation on the example security programs, see the Tutorial chapter of the TIBCO ActiveSpaces Developer’s Guide.
AS Performance Examples
A set of ActiveSpaces performance programs has been added in the /tools/asperf subdirectory of each language set's example directory:
C Examples
● ASPerf.c
● ASPerfAgent.c
● ASPerfSlave.c
● .NET Examples
● ASPerf.cs
● ASPerfAgent.cs
● ASPerfSlave.cs .NET Examples
● ASPerf.java
● ASPerfAgent.java Java Examples
● ASPerf.java
● ASPerfAgent.java
● ASPerfSlave.java
For documentation on the example performance programs, see TIBCO ActiveSpaces Developer's Guide.
The parameters for the following example programs were changed to allow operation with the ActiveSpaces security feature:
● ASOperations
● ASBatchOperations
● ASChat
● ASQuery
● ASPersistence
● ASRequestReplyServer
● ASRequestReplyClient
● InvokeClient
● ASBrowser
● ASEventBrowser
● ASListener
● MemberspaceMemberMonitor
● SpaceDefMonitor
● SpaceStateMonitor
● SpaceMemberMonitor
● The Java and .NET InvokeClient examples were modified to match the C InvokeClient example.
● The namespace used for the .NET InvocableLibrary was changed to remote to allow the .NET InvokeClient example to be able to interoperate with the Java and C InvokeClient examples.
● .NET ASInvocable and ASInvocableMember are now linked with the .NET ASOperations example so that the .NET version of ASOperations can now be used with the InvokeClient example.
● Support for the -remote_discovery command line option has been fully removed from the examples. Remote discovery should now be specified using the -discovery command line option giving a value of the form:
tcp://IP:port?remote=true
● The default timescope used in the ListenDef object for the Java and .NET examples is now
“new_events”. The Java, .NET, and C examples now all use the same default timescope setting.
● The Java, .NET and C examples all use a default timescope setting of SNAPSHOT in the BrowserDef object.