RBNB Release Notes

RBNB V3.1a Release Notes

V3.1a Production Release

V3.1a released 07/09/2008
This release corresponds to RBNB Subversion repository revision number 151
Fixed a bug in rbnbPlot (RBNB Issue #9, "rbnbPlot throws NullPointerException on chans w/o MIME").
Add headless (no GUI) mode to UDPCaster; this is activated using the new "-g" command line flag.

RBNB V3.1 Release Notes

V3.1 Production Release

V3.1 released 06/27/2008
This release corresponds to RBNB Subversion repository revision number 146
The source for this release is identical to the source used for release V3.1B4a

V3.1B4 to V3.1B4a Changes

V3.1B4a released 05/28/2008

WebDAVServlet

V3.1B3 to V3.1B4 Changes

V3.1B4 released 05/23/2008

General

Server

Matlab

PlugIns

WebDAVServlet

HttpMonitor

rbnbPlot

V3.1B2 to V3.1B3 Changes

V3.1B3 released 03/04/2008

General

Server

SAPI

Matlab

PlugIns

WebCache

V3.1B1 to V3.1B2 Changes

V3.1B2 released 01/11/2008

General

Server

TimeDrive

PlugIns

UDPCaster

rbnbPlot

V3.0 to V3.1B1 Changes

Third_Party directory has been pulled out of Source directory; build files have been adjusted as appropriate. This is consistant with the folder structure at NEESforge and makes sense since the content of Third_Party isn't part of the RBNB open source.

rbnbServer

RBNB V3.0 Release Notes

This release of the RBNB system contains the following changes:

V3.0 Production

  • Code is frozen as a stable production release.
  • Both "push" and "pull" mirrors now have reconnect logic
  • Added limited support for displaying 3D icons (".dae" models) to TrackKMLPlugIn. An "Icon Scale" combo box has been added to the GUI which allows the user to specify the scale for both 2D and 3D icons.
  • V3.0B3 to V3.0B4 Changes

  • RBNBPlot's font size can be specified with the java debug flag -Dplot.fontsize=N
  • "Pull" mirrors will automatically reconnect if the network link goes down. This is a beta test change, with "push" mirrors to follow in a future release.
  • Parameters targeted to specific plugins can now be specified via both the URL "munge" interface and the API. The URL syntax is "?pio=plug-in-name,key1=value1,...,keyn=valuen". The API interface is ChannelMap.AddPlugInOption()
  • V3.0B2 to V3.0B3 Changes

  • Fixed bug in ResamplePlugin so it now handles multiple channels per request

    V3.0B1 to V3.0B2 Changes

    rbnbServer

    Developer API

    V2.6 to V3.0B1 Changes

    V3.0B1 is the first beta release of V3 RBNB. It is identical to V2.6 except that it is being released under the Apache 2.0 Open Source license. See the revised EULA for license details, and the new "Source" link to download source code. Future releases will provide build/source documentation as available.

    V2.6B6 to V2.6 Changes

    V2.6 is a stable production release.

    rbnbServer

    Plugins

    V2.6B5 to V2.6B6 Changes

    rbnbServer

    TrackKMLPlugIn

    V2.6B4 to V2.6B5 Changes

    rbnbServer

    PlugIns

    Developer API

    TimeDrive

    HttpForward servlet

    TrackKMLPlugIn and TrackDataPlugIn

    V2.6B3 to V2.6B4 Changes

    rbnbServer

    rbnbAdmin

    rbnbPlayer

    V2.6B1 to V2.6B3 Changes

    WebTurbine

    Rebuilt code to run with JRE (versus full JDK required with previous release).

    rbnbServer

    A "frameset" is a collection of cache frames which are written to the archive. The rbnbServer code has been modified to set the default number of framesets to 2. For example, if a Source has 100 cache frames, then by default this cache is broken up into 2 framesets of 50 frames each. If this Source has an archive, then the archive will be appended each time 50 new frames arrives in the Source.

    A new RBNB Server command line option has been added for setting the number of framesets in each cache, "-Dnumframesets=<positive integer>". For example, if a Source is created which has 1000 cache frames, and if the RBNB Server was started with the command line option "-Dnumframesets=5", then this Source's cache is broken up into 5 framesets of 200 frames each. If this Source has an archive, then the archive will be appended each time 200 new frames arrives in the Source.

    If the user specifies "-Dnumframesets=0" on the RBNB Server command line, this is a special case which tells the Server to set the number of framesets for each Source equal to the square root of the number of cache frames in the Source. This is equivalent to the legacy method of setting the number of framesets (before the Server change to set the default number of framesets to 2, see above for details). For example, if the RBNB Server command line included "-Dnumframesets=0" and a Source is created which has 100 cache frames, then the number of framesets will be set to 10 (since the square root of 100 is 10), and each frameset will contain 10 cache frames.

    V2.5 to V2.6B1 Changes

    V2.6B1 is a beta release

    WebTurbine

    Upgraded to Jakarta Tomcat 5 Web Server.  This change entails a re-implemented RBNB Web servlet which should be more efficient.  As part of this change, the "rbnbUser" web interface has been deprecated and replaced by "RBNB".  The "rbnbNet" interface is no longer available.  All URL references to an RBNB are relative to the connected server via the "RBNB" servlet, as in:

    http://localhost/RBNB

    WebTurbine now recognizes If-Modified-Since headers and only returns data if it has changed. This greatly improves the efficiency of the WebTurbine for polling applications.

    rbnbServer

    Fixed a bug if Source archive length was less than cache size, no archive would be created.

    Fixed a bug if a Source did a Detach() too quickly after the last Flush, a corrupted ring buffer would prevent subsequent Sinks from Fetching data.

    Fixed a bug where the Server would orphan a thread each time a client made a Registration request. This would eventually cause the Server to grow in memory and thread resource use. 

    Routing PlugIn

    The Robust Routing Plugin now has a "Routing Console" web interface to launch/stop and review routing plugin status.
    If a _loopback RoutingPlugIn is running at the source, UDP is used for monitoring instead of the usual SAPI connection.

    rbnbAVCP

    Bug fix for 16-bit audio; performance tweaks.

    ThumbNail PlugIn

    If max number of images has been set to 1, ThumbNail now correctly limits max number of images to 1.
    Added "-n" option for setting PlugIn name.

    KMLTrackPlugIn

    KMLTrackPlugIn is a new PlugIn being distributed with RBNB.  This PlugIn converts a series of RBNB alt, lat, lon
    data points into a KML document viewable with Google Earth.

    TimeDrive

    TimeDrive is a new application being distributed with RBNB.  TimeDrive is a Web proxy server which adds a time munge
    to WebTurbine requests.  A Web interface is provided with VCR-like controls for setting TimeDrive's current time.

    V2.5B7 to V2.5 Changes

    V2.5 is a stable production release

    rbnbPlot

    A problem that under certain laggy conditions could lock up channel selection has been fixed.
    The plot label units-multiplier (e.g. "kilo") that was temporarily lost is now back.

    rbnbAdmin

    Admin now recognizes and displays PlugIn channels (one level deep).

    RoutingPlugIn

    The Robust Routing PlugIn has been updated to better support streaming data connections.
    There are some server mods specific to plugins that support this.

    WebTurbine

    The default archive-mode via the WeDAV (file) interface is once again "append" (vs "create").

    V2.5B6 to V2.5B7 Changes

    V2.5B7 is an updated beta release.

    rbnbPlot

    The plot display boxes are under user-controlled layout manager, allowing individual window components to be positioned and sized independently.

    V2.5B5 to V2.5B6 Changes

    V2.5B6 is an updated beta release.

    rbnbPlayer

    A TCP output option has been added to Player.  The user specifies a port number on which Player will open a server socket to listen for TCP client connections.  RBNB data is sent to each connected TCP client. Default display mode and duration have been modified.

    RBNB Server

    Due to numerical round-off in the RBNB Server, certain problems have been identified with time-based subscriptions where the Source has a multi-point frame defined by a single start time and non-zero duration (a time is not set for each point in the frame). This problem has been fixed (by adding a small roundoff correction) for some of the cases where the problem occurred.

    rbnbPlot

    Text channels (those with mime type text/plain, or ending in ".txt" or ".text") will be displayed in a scrolling text box, synchronously with other data.

    Web Interface

    An option to the WebDAV interface for converting fetched data to text ("&dt=string") has been added.

    V2.5B4 to V2.5B5 Changes

    V2.5B5 is an updated beta release.

    RBNB Server

    We found and fixed some subtle bugs in streaming modes (monitor and subscribe). The bugs occured when a sink streams multiple channels from a source with multiple ring buffers (e.g when a source puts different channels in different frames at different rates).

    The following bugs were fixed:

  • Monitor mode could get duplicate frames
  • Subscribe mode could block forever waiting to start
  • Streaming from oldest or newest could skip the first frame
  • ChannelTree

    The ChannelTree API structure now has time info (start & duration) consistent with the ChannelMap object.

    rbnbPlot

    rbnbAVCP

    rbnbAVCP now supports full command-line option control. It also uses the new registration userInfo methods for describing its content.

    WebTurbine

    You can now fetch channel meta-data ("userInfo") via the WebDAV option 'fetch=info'.

    V2.5B3 to V2.5B4 Changes

    V2.5B4 is an updated beta release.

    rbnbPlot

    A new capability to export selected data to the locally connected DataTurbine is implemented.

    Registration metadata

    New API methods putUserInfo and getUserInfo enable per-channel metadata to be stored and retrieved in the registration channel map of a data source.

    Server side automatic timestamps

    Server timestamps were broken and are now fixed.
     

    V2.5B2 to V2.5B3 Changes

    V2.5B3 is an updated beta release.

    Sink constructor deprecation

    The Sink constructor taking arguments (cache,mode,archive) has been deprecated, and now calls Sink() instead. The server does not support setting cache and archive for Sinks.

    rbnbAVCP

    The rbnbAVCP video capture and display application has been updated and improved.

    rbnbPlayer

    The rbnbPlayer application has been updated and several bug fixed in the beta version.  Specifically, single-point playback now works properly.

    rbnbAdmin

    The rbnbAdmin application now has an option to load archives from disconnected sources.

    Authentication (Beta)

    Authentication via Kerberos or Grid GSI security is supported.
     

    V2.5B to V2.5B2 Changes

    V2.5B2 is an updated beta release.

    Applet Security

    The RBNB API has been updated to allow clients (sources and sinks) to run as applets using default applet security rules (e.g. connecting back to the same server from which the applet was loaded).  Previously, there were a number of Java System.getProperty() calls that would throw uncaught exceptions if run as an applet.  These are now caught and defaults used for the case of applets.

    Audio/Video Capture and Display

    Updated audio/video capture and display application (rbnbAVCP) is included in this release.  This is effectively an RBNB "videophone" that has built-in record and playback capabilities.

    rbnbPlayer (Beta)

    The V1 "rbnbPlayer" application has been updated and ported to RBNB V2.  This application "plays" data from one source and outputs it to another,  time-slewing it using VCR-like controls.  Sink clients can subscribe to the player output channels and thereby by remote-controlled. (This release of player is Beta-only.  There are known issues and some debug print-outs).

    Improved Archive Recovery Logic

    The archive recovery logic was improved so that certain types of previously unrecoverable corrupt archives are now recoverable.

    ThumbNail Plugin

    A new "thumbnail" plugin is available that will downsample and/or reduce JPEG image size.  This enables remote access to large volumes of video data over limited network bandwidth links.

    V2.4.4 to V2.5B Changes

    V2.5B is a beta release of the RBNB system.  It includes a number of new and enhanced applications, and optionally supports a  .NET compatable interface.

    PlugIns

    New and enhanced plugins are available: See the on-line Help documentation for details about each of these plugins.

    rbnbPlot

    The rbnbPlot stripchart application now supports video images.  Channels that end in ".jpg" are displayed as a "filmstrip" of video images. Clicking on the video window brings up options to set the image number and size.

    Java V1.1 Compatability

    The low-level server and API code modifications have continued in various places to retain (old) Java V1.1.4 compatability, in order to support the .NET J# compiler.  Client code can be developed using the latest (e.g. Java 1.4) features.  Among the changes made:

    V2.4.3 to V2.4.4 Changes

    Registration Metadata Bug Fix

    A bug was fixed that could cause the "user" registration data (metadata) to be unreliably updated and retrieved.

    Router Shutdown Robustness

    Modified the synchronization of router shutdown, to increase tolerance for network lapses.

    Java V1.1 Compatability

    The low-level server and API code was modified in several places to retain (old) Java V1.1.4 compatability, in order to support the .NET J# compiler.  Client code can be developed using the latest (e.g. Java 1.4) features.  This work is in progress.

    Another shot at rbnbjcap

    The rbnbjcap/jview video applications in the previous release (still) did not have all the required class files. This build hopefully fixes that.

    V2.4.2 to V2.4.3 Changes

    Subscription by Wildcards

    It is now possible to specify a "*" wildcard for subscriptions by time.  Subscriptions by frame still do not support wildcards.

    Zero-Duration Request Logic Enhanced

    Prior to this release, a request for zero-duration at an absolute time would fetch data at-or-before the specified time.  This is handy so that sources can put data at zero-duration, and a request for zero-duration will find the "then-newest" data at any time.

    With this release, the enhanced at-or-before logic is extended to include the time-relative requests ("newest" and "oldest").  Thus, relative and absolute requests behave consistently in this respect.

    Build Includes rbnbjview and rbnbjcap Applications

    V2.4.x had inadvertently omitted including the video client applications in the build.  They are now back.

    Minor API Documentation Updates

    The javadoc has been tweeked for some methods.

    Change in Low Level Communication

    A change was made in the low level client/server communication to allow better cross-Java-version compatability. (Transmission of serialized Java objects was eliminated). Specifically, the .NET J# compiler will soon be supported.

    This change should be transparent to all users, and cross-RBNB-version compatability is maintained.

    V2.4.1 to V2.4.2 Changes

    Multiple Ring Buffer Request Problem

    A bug in the server caused a string index out of range error when requesting a short channel name (<3 characters) from a source with multiple ring buffers (channels sent in separate groups).

    V2.4 to V2.4.1 Changes

    Delete Channels from Registration

    An oversight in the delete channels capability would result in channels not being fully deleted if they were explicitly registered. This effected the WebDAV system, which uses explicit registration for empty files. Moving, renaming, and deleting files now works properly.

    Updated Documentation

    Documentation has been updated to reflect the changes to the layout and all of the documentation is now included as part of the WebTurbine system.

    V2.3.2 to V2.4 Changes

    New Installation System

    The RBNB DataTurbine and WebTurbine system is now delivered as an IzPack installation rather than an InstallAnywhere system. The former is a freely distributable package. It lacks the JRE installation capability used on Windows systems, but is otherwise similar to the latter.

    New Installation Layout

    The installation layout has changed somewhat, mostly in the WebTurbine area where we now use .war files to package the RBNB extensions. Renamed Package The former COM.Creare.Utility package has been renamed to com.rbnb.utility for consistency. This package contains some useful, general-purpose utility code.

    V2.3.1 to V2.3.2 Changes

    COM.Creare.Utility Package renamed to com.rbnb.utility

    The COM.Creare.Utility package has been renamed to com.rbnb.utility for consistency with Java standards.

    Restructured Installation

    The build and installation process has been changed, resulting in a somewhat different structure to the resulting delivery. The major, noticable change is that the WebTurbine files have been packaged in .war files.

    V2.3 to V2.3.1 Changes

    Routing Reconnect Loop

    If an error (not a network problem or server shutdown) caused a routing connection to be lost, it was possible for the two servers to get into an infinite loop of lose routing/re-establish routing. This has been fixed.

    Number of Threads

    Some types of requests, especially going across routing, had the potential of stranding threads due to a notification problem. This has been fixed.

    JNDI_Sink Names

    The names of the JNDI_Sinks (used by the WebDAV interface) have been changed to reflect the Web application that creates them.

    JNDI_Sink Pool

    The number of JNDI_Sinks (used by the WebDAV interface) held in a pool for future reuse has been reduced from 16 to 4. This may cause some degradation in responsiveness, but improves overall resource use.

    Stranded Web Turbine JNDI_Sinks

    The number of JNDI_Sinks (used by the WebDAV interface) could potentially grow indefinitely if problems occured on the server side. The JNDI_Sinks now have a one minute timeout on any request and automatically shutdown if they do not get a response before the timeout expires.

    Linux IBM Java Requirement

    The Linux startup scripts used to state that an IBM JVM was required for proper operation. This is no longer true.

    V2.2.2 to V2.3 Changes

    Client Address Access Permissions

    The authorization security file now allows specific permissions (read, write, etc.) to be permitted rather than just full access allowed/denied.

    Unconnected Shortcuts

    If a client asked for a registration map from a server with a shortcut that was in the process of being connected, the server would wait for the shortcut before returning the registration map. The server now skips over such shortcuts.

    Connection Lockups

    A timeout has been added to the code that makes TCP connections to remote servers (both in the client API and in the server code for setting up routing). This ensures that failures in the low-level TCP socket connection logic due not result in client or server level lockups.

    Duration Zero Request Problem

    A duration zero request for data with zero duration sometimes returned the wrong data. This would happen when the request time fell between two framesets. Instead of returning the last frame in the frameset preceededing the request, the code was returning the first frame in that frameset.

    V2.2.1 to V2.2.2 Changes

    Deadlocks

    Under load, especially at startup, there was the potential for deadlock situations in the server. As a result, sources and sinks would produce informational messages about being blocked. These have been fixed.

    Frame-based Streaming from a Source with an Archive

    Streaming from a source with an archive using frame-based streaming has been problematic. While the use of reframing (see archive subscription problem), it is at the price of increased storage. As of V2.2.2, the server will terminate a frame-based stream that attempts to get data out of an archive (either by requesting oldest or due to the fact that the stream is unable to keep up and falls out of the cache). Performance when streaming from the cache when there is an archive has been improved as well.

    Mirror Shutdowns

    If the RBO side of a mirror was shut down, the mirror might not properly clean up. This could result in memory growth, eventually causing out of memory problems.

    V2.2 to V2.2.1 Changes

    Storage/Retrieval of rbnbPlot Configurations

    The rbnbPlot application now allows the user to store and retrieve configuration information.

    Monitor Mode Timing Bug

    A timing bug in Monitor retrieval mode caused premature termination of the stream of data being sent from the server.

    V2.2B6a to V2.2 Changes

    Duplicate Times in Time-Based Subscriptions

    If the input stream of a time-based subscription contains points with identical times, the subscription could go into a loop retrieving those two points until they disappear from the ring buffer.

    Per-Channel Times in Time-Based Subscriptions

    Per-channel (as opposed to per-frame - i.e., shared by all channels within a frame) times would not be properly handled by time-based subscriptions for channels other than the first.

    RBNB Window Minimized

    On Windows machines, the RBNB window is now started in a minimized state.

    Failed Data Connections When Lots of Clients Simultaneously Connect

    Due to a lack of synchronization, the server could fail to properly link a data connection to its control connection when lots of clients simultaneously connect to the server. The result would be that the client would fail to connect and the server would eventually time out the client handler.

    Shutting Down a Source During Data Retrieval

    Under certain circumstances, it was possible for the RBO handling a source client to go through its shutdown process while a NBO was in the middle of retrieving data. This would result in the NBO getting locked up waiting to get data that had been deleted. This has been fixed so that the NBO gets no data from the source.

    Improperly Aborted Remote Connections

    If the local side of a request for remote data terminated while that request was being set up, a connection between the local and remote servers could be stranded. This has been fixed.

    Stranded Remote Monitor/Subscribe Connections

    If the local side of a monitor or subscribe request terminated, it could leave an active stranded connection between the two servers. The connection used up resources trying to deliver responses to the request to a non-existent client. The connection is now terminated.

    Lockups Due to Routing Failures

    A number of changes have been made to ensure that servers detect (within a timeout period of a couple of minutes) routes that have failed (or which never were fully established).

    Failure to Find Routes in Hierarchies of Servers

    A bug in the code that determined where next to deliver a message that is going up a chain of parents and children caused routing problems.

    Delivery of Routed Messages to Terminated Clients

    If the local client of a request made to a routed server was closed before the response to that request could be delivered, the response would be sent back to the remote server. The result was that the route between the two servers would lock up because all of the connections were occupied with trying to deliver the message. The local server now reports that it failed to find the local client, which forces the remote handler to shut down as well.

    Properly Handle Client Shutdowns During Initialization

    If a client application shuts down while the connection between it and the server is being established, the server might not properly clean up its side of the failed connection. The result was that there was a client handler in the server that could not be terminated. This has been fixed.

    Properly Handle Exceptions During Routing Initialization

    If an exception occured when a route is being established between a child and a parent server, the parent server might not properly clean up its side of the failed route. The result was that the parent server would report a route where there was none. Attempts to use it would lock up. Attempts to terminate it would fail. This has been fixed.

    Improved Error Message Reporting

    Some exception and error messages were being quietly swallowed by the RBNB server. These messages now appear in the log and on the console.

    Delivering Error Messages via Failed Connections

    The server was attempting to deliver an error message reporting a failed connection via that connection. The result was that the message would never be delivered and the client handler in the server would never properly exit. The server no longer tries to deliver such messages.

    V2.2B6 to V2.2B6a Changes

    Fixed Bug in Server-Side Data Retrieval

    A timing problem could cause the server side for a sink to lock up if an RBO from which it was retrieving data terminated during that retrieval.

    Fixed Bug in Server-Side PlugIn Shutdown

    A bug in the server-side shutdown code for plugins would cause a stranded plugin object in the server. The client-side would properly exit.

    V2.2B5 to V2.2B6 Changes

    Extended Start Requests

    When requesting data, it is now possible to ask that the server retrieve an additional data point before the specified start time of the request if there is no data point exactly at that time.

    Clearing RBO Caches

    The new ClearCache method can been called to clear out the contents of an RBO's cache. The data is flushed to the archive and then removed from the server's memory, reducing the RBO's footprint.

    Asynchronous Log Display

    The display of log messages to the console is now asynchronous to the rest of the server. If the console output be blocked for some reason, the server still continues to operate normally, although some messages may not be displayed (they are still logged if logging is on).

    Fixed Metrics History

    Metrics data for detached connections was being lost.

    Reduced Memory Usage for "Live" Archives

    When data is removed from the cache, it is supposed to be removed from memory. With an archvie, some of this memory was not being released properly.

    Improved Handling of Data Retrieval Errors within the Server

    The server now properly reports that no data is available from RBOs that close during the data retrieval process.

    Improved Error Handling during Connection Process

    If a client disconnected during the connection process, it was possible for it to leave its server side handler in a blocked state. The server side handler now times out and shuts down.

    Improved rbnbAdmin Exit Handling

    The rbnbAdmin application now properly exits even if its connection to the RBNB server has been locked up due to problems on the server side.

    Enhanced ProxyPlugIn

    The proxy plugin has been enhanced to provide a number of new features.

    Echo Message PlugIn

    A new plugin has been added that echoes messages it receives to the console. It is intended as an example of how to write a plugin.

    V2.2B4 to V2.2B5 Changes

    Absolute Requests for Duration of Zero (0)

    Absolute (specific time) requests with a duration of zero (0) now retrieve the first data point at or before the time specified. Previous versions would only retrieve a data point if there was one exactly at the specified time. This mode can be turned off using the new -C V2.1 flag.

    Subscribe by Time

    A new capability has been added that allows a sink to specify the nominal duration to retrieve on each fetch call when subscribing (not monitoring). This allows the sink to get data in chunks that are not constrained by the source-specified frame duration (except in so far as the latter is all the data that is available).

    This capability addresses the archive subscription problem described in the release notes for V2.2B4 as the reframing does not effect times, just frames.

    Fixed Registration Problem

    A problem in the code that computes the registration time information for a source would fail to consistently update the limits for the second and subsequent channel groups. This would result in requests for "newest" failing to properly get the latest data.

    Fixed Backwards Going Time Problem in Appending to Archives

    A bug in the code that determines the time of the newest data in an archive loaded for append resulted in the code improperly allowing time to back up.

    Fixed Further Deadlock Problems

    A variety of deadlock or runaway CPU problems that effect multiple, simultaneous sinks retrieving data from a single source have been fixed, improving on the work done in V2.2B4.

    Fixed the Frame Indexing in Append Mode

    The frame index for assigned to new frames being added to an existing archive (append mode) was not set to be after the last frame in the archive. The result is that such neither monitor nor subscribe (frame-based) would work properly on such archives. This has been fixed.

    Bug in Archiving Data with a Zero (0) Duration and Multiple Points per Time

    Archives containing data where a single time and zero (0) duration spans multiple points did not work correctly in earlier versions.  The time information for the second and subsequent points would be lost and a time of 0 would be assigned, resulting in unusable archives.

    This is an uncommon format for data.  It requires that the source specify a time interval with a duration of zero (0) and then provide a data array containing more than one point.  For ecample, the following Java code would produce the problem:

    cmap.PutTime(1.,0.);                     // Set a time of 1 with a duration of 0.
    float[] data = { 1.F, 2.F, 3.F, 4.F };   // Create a data array containing the values 1 to 4.
    cmap.PutDataAsFloat32(0,data);           // Add that data to the channel.

    V2.2B3 to V2.2B4 Changes

    The Cache and Archive Sizes are Changed when Reconnecting to an Open Archive

    When using the reconnect capability (close an archive with keep cache and then reopen for append), the cache and archive sizes are now changed to match those requested by the reconnecting client, rather than silently using the internal values.

    Known Issues with Streaming (Frame-based) from Archives

    There are a number of problems when streaming (subscribing/monitoring) datastored in archives. The reframing of archives causes the loss of information needed to be able to properly stream. These problems can be alleviated by turning off reframing at the cost of some performance.

    Note that reframing is on or off for the server as a whole and must be set when writing the archives (it isn't required for reading them back).

    Reframing can be turned off by defining a Java system property called "noreframe" (the value is irrelevant so long as the property is defined). The property can be defined when the Java Virtual Machine (JVM) is launched by using the following command:

    prompt> java -Dnoreframe=true 

    For those using the Windows RBNB icon to launch the system, you need to define CATALINA_OPTS as "-Dnoreframe=true".

    For those using the Unix shell scripts, add "-Dnoreframe=true" to the definition of CATALINA_OPTS in the ${RBNBHOME}/bin/Start_Webserver.sh script.

    Streaming from Oldest Limitation

    When streaming from oldest, it was possible for the code to miss frames when it reached the end of the available data and started waiting for new data to arrive. For now, the code has been modified so that it won't miss data, but it may fail to properly move forward when looking at data in a source containing multiple ring buffers.

    Fixed a Deadlock Problem with Archives

    Under some circumstances, it was possible to cause a deadlock when using archives. If the maximum number of open filesets was reached due to sources (either because of the number of sources or the number of ring buffers within one or more of sources), then the code could get into an infinite blocking state for some of the ring buffers. If a sink subsequently attempted to read from the source, it would eventually start reporting timeouts. This bug has been fixed.

    Fixed additional Deadlock Problems

    Additional problems with deadlock situations between a source and a sink, where the sink could end up blocked waiting for the source and vice-versa, have been fixed.

    Fixed Error in Versioning Feature Support Logic

    A timing error in the code that is supposed to check to see if a feature is supported could unexpectedly cause the code to temporarily think a feature was not supported during startup.  In combination with the load all archives (-F) flag on the server, this error would result in some archives failing to load without any indication of a problem.

    Fixed a Problem with Loading All Archives

    An additional problem with loading archives was discovered when the number of archives to be loaded is large.  Some archives might fail to load because of a limit on the number of simultaneous new connections to the server. The code now retries the attempt to load the archive until it either loads, fails for a reason other than a rejected connection, or the server exits.

    Improved Automatic Re-establish Routing Logic

    Under some circumstances, there was an opportunity for a deadlock situation in the code that re-establishes a routing connection between a child and parent server.  This has been fixed.

    V2.2B2 to V2.2B3 Changes

    Fixed Data Retrieval Bug Caused by Deleting a Channel

    When attempting to retrieve data from an archive that had a channel deleted out of it, the V2.2B2 code might either fail to find valid data or might get an exception. This has been fixed.

    Fixed Source Connection Shutdown Code

    The code that was supposed to close down a source with an archive had some problems. In particular, if the source application disconnected, but told the server to keep the cache and archive loaded, then the only way to close the server side properly was to re-connect to the source (using "append" mode) and then do a disconnect with keep cache set false.

    Using rbnbAdmin to attempt to terminate the server side of the connection would not have any effect. Shutting down the server would leave the archive in a bad state.

    These problems have been fixed in this release.

    Improved Archive Recovery

    A number of improvements have been made to the archive recovery code to allow it to recover from a broader range of damaged archives. Further work in this area is planned for the next release.

    Improved Simultaneous Access to Archives

    Improvements to the server's handling of limited resources when multiple sources and sinks simultaneously access archives have been made. These reduce problems with thrashing and long-term lockouts.

    V2.2B1 to V2.2B2 Changes

    Documentation Updated

    The documentation has been updated to reflect changes made to the code.

    WebTurbine Port Changed to 80

    The default port for the WebTurbine has been changed from 8080 to 80. UNIX users should note that this change requires that the WebTurbine be launched with root privileges. Alternatively, you can change the port as noted below. UNIX users or people who are already running a web server on port 80 can change the port to something else. To do this, dit the file 'server.xml' found in {installation directory}/jakarta-tomcat-4.1.21/conf directory.

    Messaging Host Times Fixed

    Times in the V2.2B1 message host were stored in milliseconds since 1970 rather than the standard seconds since 1970. This has been fixed.

    V2.1 to V2.2B1 Changes

    Deleting Channels

    Channels can now be deleted via the Simple API (SAPI) or via the WebDAV interface. Note: channels created via the WebDAV interface only have their contents deleted, not the channel itself. This will be fixed in a future release.

    Messaging

    Messaging allows applications to send messages to unknown recipients via a central host. It represents a generalization of the Chat capability.
    Messaging is supported through the new com.rbnb.message.Message class and the messaging host. The latter can be launched from the Web page.

    Proxy Source

    The proxy source allows programs that support output to a TCP socket to connect to the RBNB server. When launched from the Web page, the proxy source requests a description of the data and sets up a server socket. Connect your application's output to the proxy source and your data appears in the RBNB.

    V2.0 to V2.1 Changes

    Version 2.1 is a functional (as opposed to simply bug fix) revision of the RBNB system, with the following significant features.

    Folders in Registration ChannelMaps

    In order to provide support for folders, ChannelMaps returned by registration requests now include folders, which are denoted by a trailing slash (/). PlugIns and Sources may register folders by including a trailing slash on the name added to a ChannelMap.

    Multiple Ring Buffers per Source

    The new V2.1 source handler (RBO) now provides multiple ring buffers per source, rather than just a single one as used in previous releases. This capability:

    Reconnecting to Archives

    The new V2.1 source handler (RBO) now allows source applications to reconnect to an archive. This allows a source application to come and go without removing the data from the server.

    When a source application that has an archive disconnects from the server, it may leave the archive loaded in the server by setting both the keepCache and keepArchive flags. The source application (or another using the same password) may subsequently reconnect to the archive by specifying that it wishes to append to the archive. The source handler in the server never shuts down, leaving the archived data available to all sinks even while the source application is disconnected.

    The server now automatically selects keepCache and keepArchive if it detects a problem with the TCP socket connection between a source handler and the source application using an archive. This ensures that data is not removed from the server if the source application crashes or loses connectivity (such as when a wireless connection goes out of range).

    Improved Error Handling

    The server now catches and handles errors (such as out of memory) by shutting down the application handler that caught the error. If the application is a source writing to an archive, the server attempts to save all data it has received.

    Playback from Archives

    An obscure bug in the playback code could result in some data to appear to be missing, although the data is actually in the archive. This bug has been fixed.

    New Release of the Jakarta-Tomcat Web Server

    Packaged with the V2.1 release is version 2.1.21 of the Jakarta Tomcat Web Server.

    WebDAV Support for Multiplexed Data

    The WebDAV interface now supports multiplexed data, by automatically demultiplexing into a specified number of channels.

    Known Issues

    ChannelMaps that contain channels with data as well as channels without cannot be used when making requests.  The following fragment is not legal:
    import com.rbnb.sapi.*;
    ...
    Sink snk = new Sink();
    snk.OpenRBNBConnection('localhost:3333','mySink');
    ChannelMap cmap = new ChannelMap();
    cmap.Add('rbnbSource/c0');
    cmap.Add('plugin/c1');
    cmap.PutDataAsString(1,'Message to plugin.");
    snk.Request(cmap,0.,0.,'newest');

    V1 to V2 Changes

    Version 2 is a major revision of the RBNB system, with the following significant features.

    New Licensing Model - Free to Developers and End Users

    The new V2 licensing model is designed to promote the widespread deployment of RBNB technology:
  •  Free unrestricted developer and end-user license
  •  Negotiated right-to-distribute OEM license
  • If you want to bundle RBNB with your product or custom solution, please contact us to discuss the terms of an OEM redistribution agreement.

    Creare offers RBNB consulting services, such as:

  •  Development support
  •  Custom features
  •  System integration
  •  Training
  • Web Integration

    The new WebTurbineTM interface enables:
  • WebDAV compatible
  • Browser access to RBNB applications and documentation
  • Run and configure RBNB clients as Web servlets
  • Browser access (view/save) to RBNB channel data
  • Build your own custom browser interface to RBNB
  • Improved Developer API

    The new Application Programming Interface (API) employs simple channelMap and client objects.  There are no more "ring buffer types".  Timestamps are simple double-precision vectors.  Efficiency is retained or enhanced while greatly reducing complexity.

    Although not source-compatible with the V1 API, you will find it straight-forward (and refreshingly easy) to port old applications to the new system.

    Powerful Application "PlugIns"

    Use your browser to configure and deploy a distributed data processing system. Example PlugIns include:
  •  Chat with other users (rbnbChat)
  •  Publish local disk files as RBNB channels (rbnbFolder)
  •  Buffered routing to minimize network traffic (rbnbBufferedRoute)
  •  "Virtual Sources" consolidate and sequence remote sources and PlugIns (rbnbVSource)
  •  Browser proxy cache to store and retrieve Web content via RBNB (rbnbWebCache)
  •  Make PNG strip charts of numerical vector data
  • Develop and deploy your own RBNB PlugIns with the new easy to use V2 API.

    Peer to Peer Solution

    With hierarchical routing of "personal" RBNB servers, the V2 RBNB provides a true "Peer to Peer" (P2P) solution.  Benefits include data and processing "at the client", while being able to locate and publish to "peers" via an RBNB address that is independent of the IP/DNS address tied to a physical location or ISP.

    New "Rmap" Core Engine

    In the old RBNB V1, data channels were relatively "flat" structures.  In RBNB V2, Rmaps are hierarchical objects comprised of name, data, timestamp and optional (recursive) child Rmaps.  For example, channel groups can share inherited metadata, or use multi-tiered RBNB channels to directly reflect the structure of file systems or Web URLs.