StreamBase Documentation
Contents
StreamBase 3.7.14.0
Date: June 13, 2008
This topic contains the release notes for StreamBase 3.7.14.0 .
If you used previous releases of StreamBase, please create backup copies of your existing StreamBase Workspace and StreamBase Configuration directories, before using StreamBase Studio in this release. Your StreamBase Workspace and StreamBase Configuration directories include your project(s), which in turn contain one or more *.sbapp application diagrams and any associated files from each project. When you create the backup ZIP or similar archive file, have its filename indicate the StreamBase release number those projects used; for example, mySBWorkspace_3.5.zip.
Note: StreamBase 3.7.0 introduced a new layout for the Eclipse platform system that is used by StreamBase Studio. This change is incompatible with any prior saved StreamBase Studio configuration (RT 21170). If you see an error that StreamBase Studio (3.7.x) cannot start, go to the directory where the existing configuration data resides, and rename that directory (for example, to StreamBaseConfigurationBackup_3.5.7). You should then be able to open StreamBase Studio.
The directories are in these default locations:
On Linux:
your-home-directory/streambase-workspace/your-home-directory/.streambase/sbstudio-configuration/
On Windows:
C:\Documents and Settings\username\StreamBase Workspace\C:\Documents and Settings\username\StreamBase Configuration\
It is a good practice to keep version-specific backups, in the event you uninstall the current StreamBase release, return to a prior version, and experience any problems. When you move from one StreamBase release to the next release, StreamBase Studio may automatically upgrade the XML representation of your applications (if needed). However, if you develop applications and then decide to "downgrade" to a previously used release, the older StreamBase Studio may not recognize some of the settings. If you must use the prior StreamBase release, and if you experience problems, you may need to delete the existing contents of the StreamBase Workspace and StreamBase Configuration directories, and either start over with new projects in StreamBase Studio, or restore the matching version-specific backup copies.
For a summary about what's new in this release of the product, see the StreamBase New and Noteworthy topic. On the FTP download site or the CD media, open doc/interm/noteworthy.html. If you already installed StreamBase, click here:
Before you install StreamBase please read this Release Notes document and then check that your target system matches the hardware and software requirements listed on the Supported Configurations page.
When you are ready to install StreamBase, see the Installation Guide. If you are new to StreamBase, read the Getting Started The documentation home page is also a useful resource to view summary information about the guides.
If you are reading this document in printed form, note that the StreamBase online documentation is available in several ways:
On the FTP download site or the CD, by opening the doc/index.html file in a browser.
From the installed file system, by opening the documentation home page in a browser. The default locations are:
/opt/streambase/doc/index.html (UNIX)
C:\Program Files\StreamBase Systems\StreamBase\doc\index.html (Windows)
In StreamBase Studio, by selecting "Help > Help Contents" from the top menu.
On Windows, from the Start menu, by selecting: Start > All Programs > StreamBase > StreamBase Documentation > StreamBase Help
Please go to the Contact Information page, which contains information about the support options. You can send us e-mail or get information from your StreamBase representative about our support portal.
We want to hear from you. Please contact us anytime.
The following table summarizes limitations that were resolved in this and prior releases of StreamBase, starting with the most recent release. A tracking number is specified, allowing you and a StreamBase representative to more easily track issues.
| Version | Number | Resolution |
|---|---|---|
| Fixed in 3.7.14 | SB-10884 | This release adds an additional way to control the size of the internal queue used between a Java StreamBaseClient's main thread and the dequeuing thread. Previously, you could control the number of batches of tuples in the queue using the Java property There is also a new Java property for the server, streambase,sbd.max-tuples-in-dequeue-packet. This property limits the number of packets the server includes in any one dequeue packet. The default value is 10000, which matches the default of the new client property described above. Administrators can set both server and client with matching values to make sure client dequeues are not overwhelmed. |
| Fixed in 3.7.13 | SB-10638 | A large StreamBase application with many client enqueue connections would cause the Statistics manager thread to show increasing CPU usage over time, and sometimes result in a connection error stating "Too many open files." The root cause was identified and fixed. |
| Fixed in 3.7.12 | SB-7573 | The client.isClosed() method in the StreamBase Client API was returning unexpected results. The method was fixed to work as expected, which is to return true when the client connection is closed. |
| Fixed in 3.7.12 | SB-6651 | A problem in the Wombat MAMA adapter was causing StreamBase Server to sometimes crash on shutdown. The cause was identified and fixed. |
| Fixed in 3.7.11 | #64565 and #65877 | A problem in the StreamBase Wombat adapter sometimes caused a ConcurrentModificationException error, requiring the sbd to be restarted. This exception no longer occurs. |
| Fixed in 3.7.10 | #61536 | Incomplete or malformed timestamp strings passed to the StreamBase strptime() function could cause an ArrayIndexOutOfBoundsException error. This was fixed so that such strings return useful error messages and do not halt the containing process. |
| Fixed in 3.7.10 | #59823 | In previous releases, the Reuters Subscribing Input Adapter processed received time fields incorrectly. The published time fields have no time zone indicator and should therefore be treated as UTC values. But, the adapter was treating them as local time values, which inadvertently added a time zone offset to time values when sending the resulting tuples downstream. This was fixed. |
| Fixed in 3.7.10 | #58442 | The library element of the XML grammar of the StreamBase Server configuration file (the .sbconf file) was corrected. This element is used to specify the paths to private Java library files that will be prepended to the JVM's java.library.path. In previous releases, the setting of the library element was inadvertently ignored; as of StreamBase 3.7.10, this element is interpreted correctly. |
| Fixed in 3.7.9 | #57799 | StreamBase stored only the date portion of timestamps when writing to MySQL over JDBC. The problem was fixed. |
| Fixed in 3.7.9 | #56623 | A memory leak in the Excel adapter was fixed. |
| Fixed in 3.7.9 | #55594 | jsbmonitor reported incorrect statistics for memory usage. The problem was fixed. |
| Fixed in 3.7.9 | #36207 | The CSV embedded input adapter did not generate a typecheck error when no fields were defined in the output schema. An error is now generated unless the output schema contains at least one field. |
| Fixed in 3.7.9 | #48486 | sbfeedsim failed to run on Solaris because of a JVM incompatibility. The problem was fixed. |
| Fixed in 3.7.7 | #35246 | In previous releases, performing a filtered subscribe on a non-existent stream could result in a StreamBase runtime compilation error. This was identified and fixed. |
| Fixed in 3.7.7 | #40038 | When using the StreamBase .NET API in previous releases, there was a hard-coded requirement that the sbclient_dotnet.ini file be present in $STREAMBASE_HOME\bin. This requirement was removed. |
| Fixed in 3.7.7 | #40588 | In the upgrade from StreamBase 3.5 to 3.7, in the StreamBase EMS Adapter, the FromJMSMessageConverter interface and DefaultFromJMSMapMessageConverter class were inadvertently moved from their documented location to a different package. To resolve this issue, version 3.7.7 (and later) places this interface and class in two locations: in com.streambase.sb.adapter.jms.enqueue (for compatibility with 3.5.x) and in com.streambase.sb.adapter.common.jms.enqueue (for 3.7.x and later versions). New applications should use the new location. |
| Fixed in 3.7.6 | #39535 | In prior releases, under certain unusual circumstances, an update operator could corrupt the primary index of a table, leading to the appearance of duplicate key values, and potential data loss. This error was identified and fixed. The rare circumstances that triggered the condition were: an update operator was modifying rows in a query table with a primary key of type string, which was downstream from, but in the same parallel region as, a read operator connected to the same table, which returned three or more rows. |
| Fixed in 3.7.6 | #35628 | Errors in a third party Java library were causing a null pointer exception for users of the StreamBase Reuters Subscribing Adapter accessing certain classes of market data. This release of StreamBase incorporates a fixed version of that library, which resolves the errors. |
| Fixed in 3.7.5 | #28114 | The first-row-as-header feed simulation feature was used correctly for mapping the field to a column, but the first row data was still sent onto the stream as data. This was corrected. |
| Fixed in 3.7.5 | #30846 | In previous releases on Windows, the StreamBase Studio Window menu listed the monitor view as available in the Debug perspective. However, it is not really an option because the monitor view was removed and replaced by the Launch Monitor command. In the current release, the monitor view is no longer listed as an option. |
| Fixed in 3.7.5 | #31094 | Under certain circumstances, Java operators could continue to emit tuples after the enclosing adapter was shut down, resulting in a RuntimeException thrown. This was fixed. |
| Fixed in 3.7.5 | #34329 | In previous releases, StreamBase Studio could throw an Array Index Out of Bounds Error when you dropped a custom adapter onto the canvas, if the custom adapter contained errors. StreamBase Studio was fixed to changed to display an error message that will be more helpful to you in diagnosing the underlying adapter configuration problem. |
| Fixed in 3.7.5 | #35321 | In previous releases, compilation errors could occur when feeding large tuples to a lock operator. This was fixed. |
| Fixed in 3.7.3 | #33443 | You should be able to use intermediate streams in non-debug mode by configuring the sbd.sbconf file and adding the -Dstreambase.codegen.intermediate-stream-dequeue = true switch to the jvm-args parameter. For example: <param name="jvm-args" value="-Xms64m -Xmx256m -Dstreambase.codegen.intermediate-stream-dequeue = true"/> In the previous release, setting the switch shown did not work properly, and you could only see intermediate streams in debug mode. The problem was fixed. |
| Fixed in 3.7.3 | #33407 | StreamBase did not handle nullable fields correctly when connecting containers. |
| Fixed in 3.7.3 | #31420 | In previous releases, operators were not resumed correctly after a high-availability failover. StreamBase now sets the proper state before a checkpoint is created to make sure that operators are resumed correctly on failover. |
| Fixed in 3.7.3 | #31352 | In previous releases, changes to the Lookup expression field in the Query Settings tab of the Query operator did not correctly trigger re-typechecking. The problem was fixed. |
| Fixed in 3.7.3 | #31345 | In previous releases, the Excel adapter did not allow you to enter fully-qualified stream names into spreadsheet cells. This was an issue when the StreamBase application was running in the non-default container. Now you can enter fully-qualified stream names. For example: Note that is usually better *NOT* to specify container names in Excel cells. That is, is generally more maintainable than: |
| Fixed in 3.7.3 | #31088 | In previous releases the SCF adapter did not fully support modules: it failed to subscribe and unsubscribe dynamically when the application was not in the default module. The problem was corrected. |
| Fixed in 3.7.3 | #30589 | Under certain circumstances, dragging an item from the palette to an Eventflow editor would drop the wrong item, or not allow any item to be dropped. This was fixed. |
| Fixed in 3.7.3 | #29575 | When processing .sbfs feed simulation files, StreamBase attempted to validate the simulation file's xml namespace url by connecting to www.streambase.com. This validation is not necessary, and was removed. |
| Fixed in 3.7.3 | #17886 | In previous releases, dequeue clients were not always notified when the StreamBase Server (sbd) process was unavailable. The problem was fixed in this release. |
| Fixed in 3.7.2 | #31243, #30547, #31000 | In prior releases, an error could occur in StreamBase Studio when any action resulted in resizing a component's Properties view, if it contained a table of information. Often the exception was: java.lang.ArrayIndexOutOfBoundsException: 4. This problem was fixed. |
| Fixed in 3.7.1 | #28152 | In StreamBase 3.7.0, if you extracted components into a module reference, the created module reference's input and output ports were not connected into the original application diagram. This required you to reconnect the module's ports manually. The problem was fixed for 3.7.1. |
| Fixed in 3.7.1 | #28128 | If your application contains a looping stream (or arc) between components, you must explicitly specify the schema of the looping stream, as described in Creating Arcs, otherwise the schema of the output stream cannot be resolved. In previous releases, copying the operators in the loop would cause the schema of the looping stream to be shared by the operators. As a result, a change to either looping stream would take effect in both. In this release, such a copy now creates a separate schema for the looping stream. The schemas are initially identical, but you can edit each independently of the other. |
| Fixed in 3.7.1 | #27936 | In StreamBase 3.7.0, time-based Materialized Windows did not release and evict tuples when the specified time elapsed. Instead, they waited for data to arrive on the materialized window input stream before releasing. This has now been fixed: tuples that are read from a time-based materialized window never include any tuples that are not valid for the time-window at the time of the read operation. |
| Fixed in 3.7.1 | #29216 | After an upgrade to StreamBase 3.7 from a prior release, StreamBase Studio failed to launch unless you deleted the StreamBase configuration folder. StreamBase now installs correctly over a previous installation. |
| Fixed in 3.7.1 | #26298 | In previous releases, when you did an Import, StreamBase Studio sometimes did not find all the application resource files. The problem is fixed in this release. |
| Fixed in 3.7.1 | #18944 | Before this release, it was possible for a Java Operator or adapter to add optional input ports but not optional output ports. This release adds support for optional output ports. |
| Added in 3.7.0 | #9787 and #9793 | The Excel adapter now supports a META tag that provides access to StreamBase metadata, including count of configured uriref elements, names of each uriref element, server status, stream count, stream names, field count per stream, and field names, types, and sizes. This is all documented in the StreamBase Adapter for Microsoft Excel documentation. There's a new sample spreadsheet, meta.xls, that illustrates the use of the new META tag. |
| Fixed in 3.7.0 | #10485 | When a StreamBase server fails, the Excel adapter no longer causes Excel to display a dialog containing the message, “The real-time data server 'streambase.rtd' is not responding. Would you like Microsoft Office Excel to attempt to restart the server? Yes/No”. Instead, the adapter monitors the failed StreamBase server, and when it becomes available, reconnects in the background. The current state of each StreamBase server is available through the new META:SERVER_STATUS tag. The new |
| Fixed in 3.7.0 | #20008 | In previous releases, a badly-formed sb-microsoft-excel.sbconf file caused Excel to fail. The problem was fixed. |
| Fixed in 3.7.0 | #20009 | In previous releases, the Excel adapter reported an error and failed to continue if any of the StreamBase servers listed in the configuration file were not running. Now, it continues to run, monitoring and (re)connecting to StreamBase servers as necessary. This is helpful during testing or production when multiple servers are in use. |
| Added in 3.7.0 | #20010 | The Excel Adapter interprets an empty URIREF value in the configuration file as the default URI. For example, if the configuration file contains: and a spreadsheet cell contains: =RTD("StreamBase.RTD",,"URIREF:", ...) then this cell will reference the StreamBase server running at URI |
| Fixed in 3.7.0 | #14765 | In prior releases, sbmonitor could not connect to the running sbd server process in a particular scenario. If an outer module controlled output streams, the sbmonitor output could pause for a very long time if a tuple caused a downstream operator to send out many tuples. This problem was fixed. |
| Fixed in 3.7.0 | #17738 | In prior releases, in some cases StreamBase Studio failed to close a ZIP file after a failed import operation. This problem was fixed. |
| Fixed in 3.7.0 | #15950 | In prior releases, the Feed Simulation Editor's drop-down menu to select a column in a trace data file was limited to 10 items, making it impossible to re-allocate any additional columns. This problem was fixed. |
| Resolved in 3.7.x | #10588, #14765 | Formerly, if a StreamBase application got stuck in an infinite loop, or otherwise became unresponsive, the StreamBase Server might stop producing monitoring information. Because there was no monitoring information produced, sbmonitor could not be used to debug the problem. This was fixed. |
| Resolved in 3.7.x | #10793, #9932 | Operators that differed only in case did not typecheck correctly. This was resolved. |
| Resolved in 3.7.x | #12633 | StreamSQL ORDER BY DESC statement is now supported. |
| Enhanced in 3.5.7 | #24495 | The StreamBase Reuters Subscribing Input Adapter was enhanced. This embedded adapter is available via a separate installation kit. Prior to 3.5.7, the adapter could only map the service name and item name into market data tuples. Now the adapter can also map the 4-part subject into all generated market data tuples. 4-part subjects are often needed with fixed-income securities. If you are interested in using the StreamBase Reuters Subscribing Input Adapter, please contact us about this separate kit. It includes the embedded adapter's JAR plus several libraries and sample files. |
| Resolved in 3.5.7 | #25514 | In prior releases, the StreamBase Reuters Subscribing Input Adapter interpreted the send-unchanged-fields-as-null flag with the wrong polarity. If the flag was set to true, a field not present in an update tick incorrectly received the old field value. This problem was fixed. |
| Resolved in 3.5.7 | #24390 | In prior releases of the StreamBase Java Client API, if a StreamBaseClient was instantiated with an invalid URI for the server, StreamBase would throw an exception (as expected: com.streambase.sb.StreamBaseException: java.io.IOException: java.nio.channels.UnresolvedAddressException) but did not properly close the connection socket. This problem was fixed. |
| Resolved in 3.5.7 | #25501 | In prior releases, if you used the keyword null in an expression without explicitly casting it to the appropriate data type, such as int(null), StreamBase Studio did not issue a helpful typecheck message about this user error. This problem was fixed. Now the IDE will issue a typecheck error: "Expression is of type null and must be cast to be used as a field." Note that if you want to use an expression that intentionally sets the result to null, you must use one of the data-type-specific null literals, as shown in the following list:
For more information, see Using Nulls in StreamBase Applications, a topic in the Authoring Guide. |
| Resolved in 3.5.7 | #25186 | In prior releases, under certain circumstances in a Java StreamBaseClient, an exception was being thrown with a NULL message. Exception processing code was not expecting null messages. The exception processing code was fixed to deal with null messages. |
| Resolved in 3.5.6 | #22793 | In prior releases, Java custom Aggregate functions could not have String return values. This problem was fixed. To use the fix, a Java custom Aggregate function implements a method with the signature static public int getResultLength() to say the length of the result. (This problem still exists for C++ custom Aggregate functions.) |
| Resolved in 3.5.4 | #18265 | For btree disk-based Query Tables that had multiple field keys, some query expressions inappropriately scanned a large portion of the table. While the correct results were returned, with very large tables this was time consuming and could result in a "Not enough space" error message. This problem was fixed. |
| Resolved in 3.5.3 | #13878 | In prior releases, StreamBase Studio could quit unexpectedly on rare occasions, and the IDE window closed. This problem was fixed. |
| Resolved in 3.5.3 | #15469 | In prior releases, the Limit number of output rows option in a Query operator could be enabled once connected to a Query Table, but did not work properly, and the setting was not retained when you reopened the Query operator's Properties view. This problem was fixed. |
| Resolved in 3.5.2 | #15766 | In the previous release, StreamBase had an issue while connecting to Oracle 9i databases via JDBC. This problem was fixed. |
| Resolved in 3.5.2 | #15207 | Very large StreamBase applications can take a lot of memory to compile. To alleviate this problem, StreamBase provides a new compiler flag that lets you adjust the maximum amount of memory used by the compiler (default is at least 256MB). streambase.codegen.javac-Xmx Use this flag the same way as the java -Xmx command-line option: Specify the maximum size, in bytes, of the memory allocation pool. This value must a multiple of 1024. Append the letter k or K to indicate kilobytes, or m or M to indicate megabytes. Examples: -Xmx83886080 -Xmx81920k -Xmx80m |
| Resolved in 3.5.2 | #14741 | In previous releases, if you cancelled an application that was just starting in StreamBase Studio, the sbd process sometimes continued to run in the background, and you had to stop sbd outside of the IDE. This problem was fixed. |
| Resolved in 3.5.2 | #14439 | If an application caused an evaluation exception to be thrown from a disk query table expression, a null pointer exception could also occur. This problem was fixed. |
| Resolved in 3.5.1 | #14528 | Several issues with using JDBC datasources in StreamBase have been fixed. |
| Resolved in 3.5.0 | #11012 | In previous versions, StreamBase installs on Windows overwrote the license file of a previous StreamBase installation. In some situations (for example, when restoring StreamBase Enterprise Edition after temporarily installing the Developer Edition), this could be inconvenient. The StreamBase Developer Edition installation now checks for an existing license file, and moves it to C:\Documents and Settings\username\streambase-license-existing.xml. |
| Resolved in 3.5.0 | #13874 | In StreamBase 3.1.2 and earlier, a merge operator could have unexpected results if both of these conditions were true:
If the input field in question were of string type, the StreamBase server could experience a null pointer exception. If the input field were another data type, then the output value could be |
| Resolved in 3.5.0 | #13890 | Gather with timeout sometimes emitted invalid values for fields that should have had null values. |
| Resolved in 3.5.0 | #13948 | Large schemas could cause compilation failure with the message, CompilationException: compilation errors. |
| Resolved in 3.5.0 | #13056 | Gather with timeout generated zero instead of null for an int field. |
| Resolved in 3.5.x | #4773 | In previous releases, the StreamBase Adapter for Microsoft Excel would display a value of zero for cells that had no actual data in the stream. This was changed to display "N/A". |
| Resolved in 3.5.x | #6985 | In previous releases, if an application contained an Output Stream whose schema was explicitly set, and this application was used by another application at two or more levels deep (as a grandchild and deeper), StreamBase Studio might not typecheck the top-level application and might display a typecheck error. This was fixed. |
| Resolved in 3.5.x | #12616 | Previously, the StreamBase C++ API did not support custom aggregate functions that had String return values. Now a plugin Aggregate function can implement a method with the signature static public int getResultLength() to specify the length of the result. For example: package com.streambase.sb.expr.test;
import com.streambase.sb.operator.AggregateWindow;
/**
* Class that implements a custom aggregate function that
concatenates strings together.
*/
public class StringConcatAggregate extends AggregateWindow {
StringBuffer buf = new StringBuffer();
public static int getResultLength() {
return 100;
}
public void init() {
buf.setLength(0);
}
public void accumulate(String s) {
buf.append(s);
}
public String calculate() {
return buf.toString();
}
} |
| Resolved in 3.1.15 | #36580 | A memory leak, discovered in version 3.1.14, was fixed. |
| Resolved in 3.1.5 | #15107 | In previous versions, the StreamBase EMS adapter allowed multiple threads to dequeue messages. Under some conditions the same message was sent more than once, while another message was omitted. The EMS adapter now does not dequeue messages on multiple threads, so this problem does not occur. |
| Resolved in 3.1.5 | #14875 | In previous versions, an application would not typecheck if it contained multiple operators that were marked to run in their own threads, and having exactly the same schema. The problem was fixed in this release. |
| Resolved in 3.1.5 | #14650 | In Version 3.1.4, some extremely large applications could encounter a "code too large" error during typecheck, due to having a large number of streams, each with a large number of fields. This problem was improved, so that the number of fields in a stream no longer matters. |
| Resolved in 3.1.5 | #10687 | In previous versions, the strptime function supported only numeric specifiers for month name fields. The strptime function now supports the UNIX %b , %h, and %B letter codes for months, as in the following expression examples: {"strptime('2006-Feb-10 11:01:03', '%Y-%b-%d %H:%M:%S')", SOME_TIMESTAMP}
{"strptime('2006-fEB-10 11:01:03', '%Y-%B-%d %H:%M:%S')", SOME_TIMESTAMP} Note that month letter codes are limited to three characters: long month names like February are not supported. |
| Resolved in 3.1.4 | #14536 | In Version 3.1.3, errors were displayed when StreamBase Studio shut down if a disk-based Query Table had an open cursor. The error caused no data loss. Now StreamBase ensures that all tables are closed prior to shutdown. |
| Resolved in 3.1.4 | #11473 | In StreamBase 3.1.3 and earlier, the Reuters RFA adapter rejected attempts to publish status messages in response to new subscription requests. For example, if a client subscribed to an item, and the item was inactive or could not be served by this publisher, the adapter rejected the publish request instead of publishing the closed status for the item. The problem was corrected. |
| Resolved in 3.1.4 | #11472 | In StreamBase 3.1.3 and earlier, the Reuters RFA adapter failed to include the RTL field in the Marketfeed header. Although this field is optional, the US tag is required. This problem was corrected. In addition, the value sent in the FIELD_LIST_NO Marketfeed header is now configurable in the RFA configuration file, and defaults to an empty string. |
| Resolved in 3.1.4 | #11469 | In StreamBase 3.1.3 and earlier, the Reuters SFC adapter did not include a mechanism to convey the active state of an item to the StreamBase application. As a result, an application could not easily detect if a subscription failed. To correct the problem, a new optional field was added to the fat and meta tuple handlers to convey an item's active state. The new field follows the same model as the optional stale field. Note that when an item becomes inactive, the adapter performs an implicit unsubscribe on the item |
| Resolved in 3.1.3 | #13811 | String constants, such as stream names or strings in expressions, are stored as static final variables. The Java class file format cannot have more than 64Kbytes of static data in any class file. Extremely large applications prior to StreamBase release 3.1.3 could exceed this limitation. This would cause studio to be unable to run the application due to compilation errors. Running from sbd would cause a code too large compilation error. |
| 3.1.3 | #13160 | In StreamBase 3.1.2 and earlier, client applications that used the StreamBase .NET client API would incur an unhandled exception of type Codemesh.JuggerNET.JuggerNETFrameworkException when run from Visual Studio if Studio was configured to break into the debugger on unhandled Common Language Runtime Exceptions. |
| 3.1.3 | #13052 | In StreamBase 3.1.2 and earlier, a gather operator can result in a null pointer exception on the StreamBase server if all of the following conditions are true:
|
| 3.1.1 | #11763 | In StreamBase 3.1.0 and earlier, StreamBase Studio calls a Java operator's init() method when the operator is dragged to the canvas. This call was removed. init() is now called only when the StreamBase application is started. |
| 3.1.0 | #10272 | Some operators (including Join and Query) sometimes gave null pointer exceptions at typecheck time when storing string fields of length zero. String fields of length zero can be created by taking the type of the expression string(null), for example. |
| 3.0.2 | #10272 | Some operators (including Join and Query) sometimes gave null pointer exceptions at typecheck time when storing string fields of length zero. String fields of length zero can be created by taking the type of the expression string(null), for example. |
| 3.0.2 | #10598 | In StreamBase 3.0.1, a multi-row read Query operator using a disk-based query table, followed by a Delete or Update operator using that same disk-based query table, would cause a deadlock and stop processing of tuples. This issue is resolved in 3.0.2. Memory-based query tables were never affected. |
| 3.0.2 | #10599 | In previous releases, StreamBase did not check the length of string fields for disk-based query table operations. As a result, runtime failures occurred. The problem was fixed. Memory-based query tables were never affected. |
| 3.0.2 | #10555 | In Version 3.0, StreamBase failed to add directories in the LD_LIBRARY_PATH environment variable (on Linux/Solaris) or the PATH environment variable (on Windows) to the Java VM's native library search path. This could cause the JVM to fail to native libraries included in Custom Java operators or functions. The problem was fixed. |
| 3.0.1 | #10024 | In previous releases, disk-based query tables were fully functional but did not exhibit Atomicity, Consistency, Isolation, or Durability (ACID) properties. The problem was resolved in this release. |
| 3.0.1 | #10055 | Previously, secondary keys could not be used in disk-based query tables whose properties were configured with the Truncate on startup option set to No. This problem was resolved. |
| 3.0.1 | #9580 | Previously, in rare circumstances in HA mode, the C++ client API would crash when the application was terminating. This happened only during application termination, so all data was sent or received correctly. The problem was fixed. |
| N/A starting in 3.0.0 | #779, #992, #1588, #4506 | Previously published release notes about the ODBC operator and ODBC Tables data construct are no longer applicable. The ODBC support was removed from the product. Instead we recommend that you use the StreamBase Adapter for JDBC to access external, JDBC-compliant resources. The StreamBase Adapter for JDBC is documented in an HTML file installed with the separate kit. By default the jdbc.html file is installed in:
|
| 3.0.0 | #3890 | In an Aggregate operator with time-based dimensions, timeouts will now trigger based on wallclock time rather than the (now removed) tuple header timestamp. This means that tuples will be emitted after the appropriate time has passed, triggered by the arrival of a new tuple. Additionally, there is no longer a concern with out-of-order header timestamps in applications unioning multiple input streams. |
| 3.0.0 | #7107 | In High Availability environments, aggregate operations sometimes erroneously evaluated timestamps to be out of order, causing tuples to be dropped. The problem was fixed. |
| 3.0.0 | #3991 | In previous releases, large query table reads could cause StreamBase Server to abort. If a read operation on a large query table (either memory- or disk-based) returned a large number of records at once, the StreamBase Server could run out of memory and abort. The problem was fixed. |
| 3.0.0 | #4073 | Previously, the StreamBase sbfeedsim utility did not support enumerations for timestamp fields. The problem was fixed. |
| 3.0.0 | #5456 | A Java operator must implement the Parameterizable interface, either directly or through a delegate. Previously, a confusing error message was displayed if a Java operator did not implement the Parameterizable interface. The problem was fixed. |
| 3.0.0 | #6573 | Previously, deleting a secondary index in Studio deleted Query operator expressions. The problem was fixed. |
| 3.0.0 | #6851 | Previously, if an sbd ran on a machine with a 2.6.x Linux kernel, any sbmonitor run against that sbd displayed the same CPU utilization for all threads. The problem was fixed. |
| 3.0.0 | #7001 | Previously on Windows using Java 1.5.0, running StreamBase applications containing Java operators that were assigned to regions, could cause sbd to abort with a Non-std::exception error message. The problem was fixed. |
| 3.0.0 | #7104 | When you create Java clients with the StreamBase API, you can use the sbclient.jar instead of the sbclient-all.jar. Previously, both were provided with the StreamBase kit for. Now only the sbclient.jar is included. For more information about adding sbclient.jar to your classpath, see Creating Clients in the API Guide. |
| 3.0.0 | #7197 | Previously, if you used custom Java operators, and the jars that you imported into your project contained incompatible class definitions, then the StreamBase Server sometimes exited without displaying any useful diagnostic information. Now a NoSuchMethodException message is displayed. |
| 2.5.4 | #9844 | Previously, the sbfeedsim -s command generated faulty code in the output file. Specifically, it failed to close all the stream elements when there were multiple streams. The problem was fixed. |
| 2.5.4 | #10037 | Previously, there was a problem using Range Specifications in the Query Settings tab of the Query operator. Specifically, setting the Start Operation on a double field to > or >= did not work properly. As a result, attempts to retrieve entries using ranges did not work. The problem was fixed. |
| 2.5.2 | #8808 | In previous releases, the StreamBase Monitor statistic for the QIN (the number of tuples currently on each component's input queue) did not properly account for Query Tables. This error resulted in QIN values that were too low. This problem was fixed. |
| Enhanced in 2.5.2 | #9029 | Coinciding with the StreamBase 2.5.2 release, the separately installed StreamBase Adapter for JDBC was enhanced to support polling scenarios. That is, the adapter can be configured to run a query periodically, typically to synchronize a Query Table in the StreamBase application with an external, JDBC-compliant database. For information about obtaining the StreamBase Adapter for JDBC kit, please contact your StreamBase representative. Or send us email at mailto:support@streambase. Note that the adapter's documentation is installed with the separate kit. Assuming that you already have StreamBase installed, the default target for the adapter's documentation is STREAMBASE_HOME/doc/adapter/jdbc.html. |
| 2.5.1 | #8360 | In previous releases, the BufferedTupleList data structure did not correctly manage null fields. This problem was fixed. |
| 2.5.0 | #7486 | In previous releases, if the Gather operator received a null value for its group-by or order-by field, the output tuples emitted by the Gather operator may have had incorrect values. This problem was fixed. |
| 2.5.0 | #6863 | In previous releases, if a Java operator threw an exception, StreamBase Studio reported an Exception During Java Method Call message, with no further details. The error message now contains more information, such as class locations, methods, and line numbers. |
| 2.5.0 | #5503 | In previous releases, data consistency problems could occur with disk-based Query Tables, if the StreamBase Server (sbd) terminated without going through an orderly shutdown. This problem was fixed. This release introduces a default server configuration that provides log-based transactions for the disk table data. If you plan to use them in your StreamBase application, it requires a special license agreement. Please discuss the details with your StreamBase representative. For information about the transactional configuration parameters, please see Defining a StreamBase Server Configuration in the Administration Guide. For related information, see Using the Query Table Data Construct to Share Data in the Authoring Guide. |
| 2.5.0 | #5140 | In previous releases on Solaris, a StreamBase Server (sbd) process could not run unless the directory containing libjava.so was set in the LD_LIBRARY_PATH environment variable. This step is no longer necessary. |
| 2.5.0 | #2824 | In previous releases on Linux, if Mozilla 1.7 was your default browser, the StreamBase Studio Help window may have remained open (and the hyperlinks were inactive) after you closed the IDE. This problem was fixed. |
| 2.5.0 | #2698 | In previous releases on Windows, if Firefox was your default browser, StreamBase Studio could not launch HTML files listed in a project's Resources folder. This problem was fixed. |
| 2.5.0 | #1942 | In previous releases on Solaris, there was an issue with building StreamBase C++ clients. A third-party component, boost, which StreamBase uses, includes a Solaris system include file. It contains a symbol that used to clash with a symbol in a boost header file. This problem was fixed. |
The following information was pointed out in the StreamBase New and Noteworthy topic. However, just to ensure that you find this notice, we are repeating it here.
Previous releases of StreamBase installed redundant JAR files named sbclient.jar and sbclient-all.jar. These two JARs contained the same set of files. Starting with StreamBase 3.0.0, we no longer install the sbclient-all.jar file. Please check your scripts. If necessary, please change any sbclient-all.jar references to sbclient.jar.
This section describes known limitations in the current release of StreamBase. If you find other problems, please contact us. For each problem listed in the following table, a tracking number is specified. These numbers enable you and a StreamBase representative to more easily track the status of issues while solutions are being developed. Whenever possible, workarounds are described in the table.
| #37149 | shutdown() called with a container-qualified URI shuts down the container, not the server. | |
| Description | The Javadoc documentation for StreamBaseAdminClient.shutdown() correctly states that it shuts down the server. However, if you create a StreamBase admin client with a URI specifying a container, shutdown() shuts down the container, not the server. | |
| Workaround | Make sure the URI you use for the shutdown call does not say "default" container. | |
| #35429 | sbd cannot run applications that generate class files with too long a name. | |
| Description | If you use modules, StreamBase can generate internal class names that are too long, causing problems running the StreamBase Server (sbd). | |
| Workaround | To avoid this problem, use small module reference names and minimize module nesting as much as possible. | |
| #33330 | When an application is running in StreamBase Studio on Windows, the Manual Input view and other views can lose details. | |
| Description | This is a known Eclipse bug. The problem occurs when you use the tab key. Borders around fields, other decorations, and some controls can disappear. | |
| Workaround | Minimize and then maximize the window, or resize the affected view. | |
| #1395 | Clients that exceed page limit buffer size disconnect with no explanation | |
| Description | When a StreamBase client exceeds its maximum number of pages (for example, because it's not dequeueing fast enough to keep up with the rate at which tuples are being generated), the StreamBase Server (sbd process) disconnects the client and prints a message saying that it has done so. However on the client side, no error is reported. Instead, it looks like an unexplained dropped connection. | |
| Workaround | Edit the *.sbconf configuration file for the StreamBase Server that will process your application, and increase value of the max-client-pages parameter. | |
| #1450 | init.d script uses hardcoded port number | |
| Description | If you change /opt/streambase/etc/sbd.sbconf to point to a port other than 10000, then the "stop", "restart", and "status" commands in the /etc/init.d/streambase script do not work properly. Those commands assume that sbd is running on port 10000. | |
| Workaround | Edit the commands in the /etc/init.d/streambase script to use the -p option, to force sbd to run on the port that you specified in the modified sbd.sbconf file. | |
| #1456 | Explicitly-provided schema in loops are order sensitive | |
| Description | If you use a loop, the order of the fields in your explicitly-provided schema must match that of the output schema. Otherwise you will get a typecheck error indicating that your explicitly-provided output schema does not match your actual output schema. | |
| Workaround | Click on the loop arc, then in the Properties view click the option: "Update using the schema that StreamBase Studio detected on one of the Union input ports." This action will rearrange the order of the explicitly-provided schema to match that of the input schema. You can also manually change the order of the fields using the Properties View for the loop arc. | |
| #1838 | C++ code is not binary compatible between releases | |
| Description | If you use either the C++ client API, plugin functions, or plugin aggregates, you must recompile them from source in order to use them in this release. Without recompiling, StreamBase will return an error message at runtime:
bin/sbd: error while loading shared libraries: libsbclient.so.4:
cannot open shared object file: No such file or directory
| |
| Workaround | Recompile your C++ code from the original source, against the new headers. | |
| #1935 | StreamBase Server may leave temporary directories in /tmp | |
| Description | If a StreamBase Server exits abruptly and it was not set up to use a persistent data directory, then it may leave behind a temporary directory with a name like /tmp/sbdata-25224. If enough of these directories accumulate, then you can encounter a conflict when the numbers are reused, which will prevent the StreamBase Server from starting. This issue is more commonly encountered on Solaris, where the numbers are recycled more quickly. | |
| Workaround | Specify a persistent data directory by setting the STREAMBASE_DATA environment variable or by specifying the --datadir command line flag to sbd.. | |
| #1948 | Online documentation navigation menu requires JavaScript | |
| Description | The StreamBase "standalone" online documentation (accessible from the file system, or via the Windows Start menu, outside of StreamBase Studio) has a navigation menu which requires that JavaScript be enabled in your browser. | |
| Workaround | If you elected to disable JavaScript in your browser, you can still navigate within the online documentation. For example, on the home page's main text, there is a list that provides "href" links (no JavaScript) to each documentation module's Contents page, which in turn provide href links to the HTML documents. If you dislike HTML documentation, you may print the PDF files that are provided with the online docset. | |
| #2048 | Issues with Linux kernel versions 2.6.8 to 2.6.10 | |
| Description | Linux kernel versions 2.6.8, 2.6.9, and 2.6.10 have a known bug in their thread handling code. This bug can cause sbd to exit immediately after servicing its first client request. For more information, see http://www.ussg.iu.edu/hypermail/linux/kernel/0410.2/1650.html. | |
| Workaround | This bug was fixed in Linux kernel 2.6.11, however please note that StreamBase does not support any Linux kernel other than version 2.4.21, as shipped on Red Hat Enterprise Linux version 3.0. In particular, note that this problem is present in the kernel shipped with RHEL 4. Setting the environment variable STREAMBASE_IGNORE_SIGHUP to "1" may also help you work around this problem, should you encounter it. | |
| #2197 | IPv6 addresses will not work | |
| Description | StreamBase Server can only connect to IPv4 addresses. If you try to connect using IPv6 addresses the connection will be refused. | |
| Workaround | None. | |
| #2414 | Files edited outside StreamBase Studio are not refreshed immediately | |
| Description | For .sbapp and .sbfs files that were created using StreamBase Studio and are still open in StreamBase Studio, modifications made using an external editor are not refreshed in the current StreamBase Studio editor. | |
| Workaround | If edits were made outside of StreamBase Studio and you now want to use the latest file, right-click the project that contains the changes you made and click Refresh. | |
| #2437 | Client API doesn't fail if connecting to HA sbd with no secondary specified | |
| Description | When you connect to a StreamBase Server (sbd) configured for High Availability(HA) without specifying a secondary sbd, the client API should fail, but does not. This means that you are not getting any benefit from using the HA sbd, because the point of HA is to implement a fail-over sbd to take over processing when the first sbd shuts down for any reason. | |
| Workaround | Specify a secondary HA sbd in the connection url. For details, see Using the High Availability Features. | |
| #2572 | Feed Simulations exported from StreamBase Studio cannot be used with sbfeedsim | |
| Description | If you export a feed simulation created within StreamBase Studio, it will create a file with an .sbfs extension. In most cases, this file cannot be used directly with the sbfeedsim command-line tool. | |
| Workaround | You must edit the file by hand, to make it conform to the XML format required by the sbfeedsim tool. Or, in a subsequent StreamBase Studio session, import the exported .sbfs file into a project, and use it in the IDE. | |
| #2585 and #7361 | From Windows, custom-simple-function and custom-aggregate-function samples do not work with Solaris server or 64-bit Linux server | |
| Description | On Windows, the installed custom-simple-function and custom-aggregate-function samples contain library files (log.so and stdev.so, respectively) that are built for Linux. These custom functions will work properly only when StreamBase Studio is connected to a 32-bit Linux server, not a Solaris server, or a 64-bit Linux server. | |
| Workaround | To use the custom-simple-function and custom-aggregate-function samples with a Solaris server:
| |
| #2612 | Java client API does not disconnect if user connects only to secondary | |
| Description | If you connect a client via the Java API to only the secondary server in HA mode, when the secondary is shut down, the client does not automatically exit. | |
| Workaround | Always use the HA URI (specifying both the primary and secondary servers) when the server is in HA mode. | |
| #2653 | Cannot use sbmonitor to monitor the secondary in an HA pair | |
| Description | You cannot run the StreamBase Performance Monitor (sbmonitor) against a high-availability secondary server that is in standby mode. You also cannot monitor a primary/secondary pair as a unit. Thus there is now way to monitor a StreamBase application on the secondary server. | |
| Workaround | None. | |
| #2811 | LockDirectoryException error encountered when starting StreamBase Server | |
| Description | There may be a number of cases when you would encounter the LockDirectoryException error. If the message indicates "File exists," either another instance of StreamBase Server (sbd) is currently running or the prior instance of StreamBase Server was improperly shut down. | |
| Workaround | If another StreamBase Server (sbd) is running, change the .sbconf file to point the datadir element (within the <server> ... </server> element) to a different directory. If there is no other StreamBase Server running, you must manually delete the directory named in the "File exists" message. | |
| #2846 | In HA, tuples may be lost if client-to-server connection fails | |
| Description | In High Availability environments, tuples may be lost if the connection between a client and the StreamBase server fails. | |
| Workaround | One workaround is to set the STREAMBASE_TUPLE_CONNECTION_TIMEOUT environment variable to 0 (disabling the timeout). This can lessen the chance of the connection begin dropped; however, be aware of a potential drawback to this workaround: clients in HA environments may then react slowly to hung server. | |
| #3097 | HA is disabled if socket is busy after failover | |
| Description | In a High Availability (HA) configuration, if a failover happens, the secondary server will attempt to open a socket on which to listen for messages from the primary server, should it ever be restarted. If that socket is already being used by some other program on the same machine, the failover will succeed, but the HA functionality will be disabled. Consequently if the former primary server restarts, it cannot function as the new secondary server. This means that subsequent failures will not be able to failover. On the new primary server, you will see a message similar to the following: error Can't start primary server on port XXXX: <reason> Secondary taking over but HA disabled | |
| Workaround | To run the StreamBase application in HA mode, you will need to shutdown the StreamBase Server processes on both machines, check that the port is not in use, and restart. | |
| #3236 | StreamBase Studio on Windows requires requires permission to open ports | |
| Description | Users of the StreamBase Studio on Windows may find that Windows asks whether or not the program "javaw" should be given permission to listen to network ports. This is part of the Windows firewall behavior, and is expected. We recommend you allow StreamBase Studio permission to listen to network ports. | |
| Workaround | After giving permission once, you should not be prompted about this again. | |
| #4289 | Data sent to multiple streams may get out of order | |
| Description | The StreamBase Server does not preserve the relative ordering of input tuples received on different input streams. This affects tools such as sbfeedsim, which replays recorded data. It also affects the client API, if tuples are enqueued to different streams. | |
| Workaround | In some cases you may be able to use a Merge operator to reorder your input data. However, note that the Merge operator can block in some situations and therefore may not be appropriate. In general, it is best to avoid sending data to different input streams in the first place, if the relative order of tuples on those streams must be preserved. | |
| #4434 | Venturi Compression Client 2.3 crashes StreamBase clients on Windows | |
| Description | If you have Venturi Compression Client 2.3 installed, StreamBase client programs will crash as soon as they try to connect to the sbd. This program is installed by default by the Verizon Wireless Access Manager, among other programs, so you may not be aware that you have it installed. If you cannot run or debug any programs when running locally on a Windows machine, this issue may be affecting you. | |
| Workaround | Either uninstall the Venture Compression Client (merely disabling it is insufficient), or upgrade it to version 3.1 or better. Note that newer versions of the Venturi Compression Client may not be supported by the other software on your machine. | |
| #4451 | Java API IOException when client program is suspended | |
| Description | A program using the StreamBase Java API may receive an unexpected IOException if it is suspended (using either Ctrl-Z, or kill -SIGSTOP). The IOException is thrown when the program is resumed or placed in the background. The exception may be thrown even if there is no network traffic at the time. This issue does not apply to Windows systems. | |
| Workaround | Do not suspend StreamBase clients written in Java. | |
| #4824 | For Java operators and modules, typechecking may occur regardless of connections | |
| Description | Java operators and modules are typechecked independently of their connections to other components. For modules, this may result in errors that do not clearly describe the problem. For example, if you have an application containing a module with its inputs connected, then delete an input stream that the module references, and then return to the referencing application, the arc (connection) will be dropped. However the following typecheck message will appear: "Error in referenced application: <input> lacks required attribute 'stream'". | |
| Workaround | None. | |
| #5088 | Java Operators not supported in applications opened externally | |
| Description | Java Operators are not supported in applications opened via File/Open External File or when opened from your Operating System's shell. You may encounter errors when trying to edit properties on any Java Operators in the application. This includes double-clicking on an .sbapp icon, from within Windows Explorer, email attachments, as so on. | |
| Workaround | In StreamBase Studio, you must import the application into a Project, before editing any Java Operators. | |
| #5175 | Pre-2.0 Aggregates May Have Initial Display Problem on Dimensions Tab | |
| Description | For Aggregate operators that existed prior to version 2.0, you may not be able to see all the columns in the Dimension tab's table without having to use the Properties view scrollbar. | |
| Workaround | Click to another component on the canvas, and then back to the Aggregate operator to re-select it. This will reset the size of the Dimensions tab's table columns, which should allow you to see all the information. | |
| #5327 | Error messages while creating Java operators lack detail | |
| Description | Any exceptions during the creation of a Java operator from within StreamBase Studio will result in a "Can't make new object: (operator name)" message, with no additional information. | |
| Workaround | Run the application in sbd directly for additional diagnostic information. Verify the correct JAR files are specified in your project's Custom Libraries. Verify the classes are in the JAR files. Verify that the manifests of the JAR files are correct. For more information, see the Java Operator API documentation. The debug console may have additional diagnostics. | |
| #5389 | Relocatable RPMs install incorrect symlinks in /usr | |
| Description | The Linux RPM packages are relocatable. This means that the default installation location of /opt/streambase can be changed to a different location. However, if this is done, symlinks are still installed in /usr/bin and /usr/lib that point to /opt/streambase. | |
| Workaround | Either edit the symlinks by hand, or use the tarfile instead of the RPMs to install StreamBase on Linux. | |
| #5400 | Java Operator with zero inputs does nothing | |
| Description | While it is not an error to create a Java Operator with zero input ports, the processTuple method will never be called, thus the Java Operator can never emit any tuples. | |
| Workaround | None. | |
| #5580 | "Downgrading" to Prior StreamBase Release May Cause Problems | |
| Description | If you uninstall the current StreamBase release and then "downgrade" to a prior version, such as moving from StreamBase 2.1.0 to 2.0.7, the older StreamBase Studio may not display portions of its user interface, such as the Run, Debug, and Stop icons. | |
| Workaround | Use the "Window > Reset Perspective" menu option to restore the default user interface icons and menus. | |
| #5607 | Viewing a Query operator can modify its properties | |
| Description | If you open properties on a Query Operator whose input stream or query table schema have changed since last edit, StreamBase Studio may modify certain parameters. For example, if the fields available in the Output Settings tab have changed on either the input stream or at the associated Data Construct, the Output Settings tab may (in explicit output field mode) auto-select new output fields. | |
| Workaround | None. | |
| #6539 | Mozilla issue with StreamBase Studio Welcome page and Help | |
| Description | On Linux, the StreamBase Studio Welcome page and Help require that Mozilla is installed and can be located. If you removed Mozilla, or installed it in a non-standard location, or moved it, the Welcome page or Help may not appear. | |
| Workaround | Before using StreamBase Studio, set the environment variable MOZILLA_FIVE_HOME to the path of your Mozilla installation. For example, on Linux, set it to: MOZILLA_FIVE_HOME=/usr/lib/mozilla-1.7.3 export MOZILLA_FIVE_HOME | |
| #6910 | Recordings and Feed Simulations are Strongly Tied to Application/Stream Names | |
| Description | In StreamBase Studio, if you create a StreamBase recording or a feed simulation that was associated with a particular application its stream names, and you then rename the application filename, you may find that the IDE is unable to run the recording, or unable to display the feed simulation in its editor. | |
| Workaround | Either rename the application file back to its previous name, or use a text editor to edit the .sbfs file in your project's Feed Simulations (or the corresponding file in the project's Recordings directory). | |
| #7191 | Using non-member Schema.Field to access a Tuple Does Not Throw Useful Exception | |
| Description | The StreamBase client API does not throw a useful exception if you inadvertently reference the wrong Schema while using Schema.Field to access a Tuple. Under C++, no exception is thrown and memory corruption may occur. Under Java, an ArrayIndexOutOfBoundException is thrown. This applies both to using fields from other schemas, or to using the Field objects that were used to create the Schema. Fields that are used to create a schema are not fully initialized, and so you must get the actual Field from the new Schema object in order to access the fields of a Tuple. | |
| Workaround | None via the API; you must examine your client code and verify that the correct Schema is referenced. | |
| #7215 | Aggregate dimensions do not support advance on infinite dimensions | |
| Description | In an Aggregate operator's Properties View, the Dimensions tab includes a setting for Window Size. One of the size options is "Do not close window based on this dimension". If selected, this dimension cannot cause the closing of a new window for the Aggregate. If a new window is never opened, this creates an infinite sized window that never closes (for the life of the StreamBase Server). Application designers may set up this feature, for example, to ensure that an Aggregate processes an entire day's volume of streaming data. However, a limitation is that Aggregates with infinite dimensions do not support an Advance value that you set in the Opening Policy. | |
| Workaround | None. | |
| #7346 | Heartbeat and Metronome do not respect pause in the debugger | |
| Description | The pause command in the debugger will not prevent Heartbeat and Metronome operators from outputting tuples due to the passage of time. This could cause unexpected results when debugging applications that make use of these operators. | |
| Workaround | None. For more information about these operators see the Heartbeat Operator and Metronome Operator documentation. | |
| #7367 | Heartbeat tuples don't continue after HA failover | |
| Description | Once a Heartbeat operator has received an input tuple, it will emit heartbeat tuples periodically thereafter. However, if the Heartbeat operator is used in an HA configuration and a failover occurs, then heartbeat tuples will cease until the Heartbeat operator receives another input tuple. This could result in an application ceasing to produce output after a failover. | |
| Workaround | None. For more information, see the Heartbeat Operator documentation. | |
| #7406 | Silent failure in clusters if a node's host name resolves to 127.0.0.1 | |
| Description | The StreamBase Cluster Manager's configuration file lists the host name of each node in the cluster. The Cluster Manager resolves these names into IP addresses before sending information to the nodes themselves. If any of the host names resolves to 127.0.0.1 (the universal IP address for the local machine) then the Cluster Manager will end up telling nodes to connect to their local machine, rather than the correct remote machine. This may happen if one of the nodes is running on the same machine as the Cluster Manager itself. When this happens, no error is displayed by the Cluster Manager or the nodes. | |
| Workaround | Either run the cluster manager on a separate machine from all the nodes, or use IP addresses instead of host names in the configuration file. | |
| #7449 | Daylight Saving Time changes in 2007 | |
| Description | The U.S. Congress recently passed legislation that changes the date on which Daylight Saving Time takes effect for the years 2007 and beyond. This change is not yet supported by StreamBase, so any timestamps between 2 a.m. March 11, 2007 - 2 a.m. April 1, 2007 or between 2 a.m. Oct 28, 2007 - 2 a.m. Nov 4, 2007, local time, will be off by one hour. | |
| Workaround | Either use UTC timestamps, or include explicit timezone offsets from UTC. Note that all timestamps printed by StreamBase utilities do include an explicit timezone offset from UTC. | |
| #8174 | Inconsistent support for undo in StreamBase Studio | |
| Description | Many editing operations in Studio cannot be undone. This includes operations such as renaming operators, editing query tables, copying schemas, adding operators from the palette, editing feed simulations, etc. | |
| Workaround | The Revert command in the File menu can be used to undo all changes since the last time a file was saved. | |
| #8833 | StreamBase installation: unsaved work in open applications may be lost. | |
| Description | Clicking the Ignore button in the Files in Use dialog during installation ensures that a reboot of your system will be required. If you are working in other applications during installation, note that on completion, the installer will present you with an option to reboot and you may inadvertently agree to the reboot (as you are typing or clicking) without having saved your work first. | |
| Workaround | Either close all applications when the installer presents the "Files in Use" dialog, or do not work in other applications until the installation process has completed. | |
| #8954 | Ignore Workbench Errors Related to Regions View | |
| Description | Regions defined in pre-3.0 StreamBase applications have been replaced with new concurrency options, described in the StreamBase Execution Order and Concurrency Options topic of the Authoring Guide. As a result, when starting StreamBase Studio, you may see the following message: | |
| Workaround | You can ignore this workbench layout message, and click OK. Note, however, that if you defined regions in pre-3.0 releases of StreamBase, you should examine each component in your application after opening it in StreamBase Studio. In the Properties view for each component, make sure that the concurrency option ("Run this component in a separate thread") is appropriately set - either checked or unchecked. You should only check the concurrency option for a module reference or an individual operator if you know that it can run without dependencies on other components in the application. | |
| #9620 | Finding sbd process failure details | |
| Description | When StreamBase Studio runs an application, it launches the server process (sbd) in the background. If sbd fails for any reason, the IDE will try to report the reason to you. However, depending on the failure, the actual message that StreamBase Studio displays may not contain enough information. | |
| Workaround | To get more information about the reason for the sbd process failure, click Help > About StreamBase Studio > Configuration Details > View Error Log. | |
| #9691 | Feed Simulation view on Linux is inconsistent | |
| Description | On Linux, if a feed simulation contains an error, the error icon (the red X) tooltip that contains the error message may not appear if the mouse hovers over it. | |
| Workaround | Open the feed simulation in the Feed Simulation Editor to see the error message. | |
| #9749 | StreamBase Help Requires JavaScript | |
| Description | The StreamBase Help system requires JavaScript. If you do not have JavaScript enabled, or if you disable it, the Help will not work properly. For example, context may be lost if you click the Show in External Window option from the StreamBase Studio menu for . | |
| Workaround | If you do not wish to enable JavaScript for all web visits, you can set your blocking script to not block JavaScript for localhost:<any-port>. If you want to only allow one specific port for the script-unblocking, open StreamBase Studio, select , and set the port number there. | |
| #9869 | In HA mode, client hangs when timeout EV set | |
| Description | The C++ Client API can hang when the client application is in the process of terminating in HA mode if the environment variable STREAMBASE_TUPLE_CONNECTION_TIMEOUT is set to 0. | |
| Workaround | In HA mode, do not set the environment variable STREAMBASE_TUPLE_CONNECTION_TIMEOUT to 0. | |
| #10291 | JVM crash during StreamBase Application compilation | |
| Description | When a StreamBase Server first loads an application, it compiles it to Java code using the Sun Java compiler. Some StreamBase applications can cause the Sun Java compiler to crash during this phase. If this happens, the StreamBase Server will display a stack trace that mentions OopFlow::build_oop_map. StreamBase is pursuing this issue with Sun, but in the meantime if you encounter this issue, please contact StreamBase for assistance in modifying your application to avoid the error. | |
| Workaround | Make slight changes to your application until the error no longer occurs. We are unfortunately unable to provide guidance about what specific changes to make. | |
| #10320 | 2.5.x persistent tables cannot be used with 3.0.x | |
| Description | Persistent query tables created in StreamBase Version 2.5.x cannot be used in StreamBase Version 3.0.x. | |
| Workaround | If you upgrade to StreamBase 3.x, delete any persistent tables and create new ones using the new StreamBase version. If the existing table contains critical data, you can save the data before upgrading StreamBase. For example, create a simple application in StreamBase 2.5 that writes the entire contents of the table to an output stream. Then, use sbc to run the application and write the output to a file. After the upgrade, create a simple application in StreamBase 3.x that reads the data into a persistent Query Table. | |
| #10674 | Some disk drive configurations can corrupt disk-based query tables | |
| Description | Some caching disk drives do not guarantee the sequencing of disk writes, nor do they guarantee that all the writes to the drive have actually happened. This behavior improves disk performance, but at the risk of data corruption in the event of a power outage or equipment failure. StreamBase will be vulnerable to this kind of data corruption if your StreamBase application uses disk-based query tables. | |
| Workaround | Disk drives with this behavior usually have a driver-level setting to turn this capability on or off. For example, the driver may present you with a checkbox labeled Enable write caching on the disk. Unchecking this box would prevent the problem from occurring. | |
| #13017 | Join timeout is not asynchronous | |
| Description | Join timeout in the Join operator is not asynchronous. That is, the Join operator does not remove a tuple from its buffer until the timeout has passed and another tuple arrives on the same input stream. Tuples received on one input stream do not affect the buffer of the other input stream. | |
| Workaround | None. | |
| #14207 | Typecheck problem with DB2 JDBC datasources | |
| Description | SQL INSERT statements submitted to a JDBC datasource in a Query operator or in an APPLY JDBC statement may pass typechecking even when they contain errors. This problem was detected only with an IBM DB2 datasource. For example, the following statement passes typechecking even if the named table or fields do not exist in the JDBC datasource: APPLY JDBC DB2 "INSERT INTO mytable (id, name) VALUES({id},
{name})" FROM InStream INTO OutStream; | |
| Workaround | Run the StreamBase application. If an error occurs against an INSERT statement, verify that the table name is correct. You can validate the INSERT statement by running it against a test database. | |
| #14238 | Memory problem with external JDBC datasource queries | |
| Description | The StreamBase Server can fail with an OutOfMemoryError exception while running an application with a JDBC query that generates a large result set using MySQL. | |
| Workaround | Note: Make sure you are running MySQL Version 5 or greater. StreamBase access to JDBC datasources does not support earlier versions such as MySQL Version 4. If you experience the problem described, consider limiting the number of rows that MySQL can read at one time. You can do this by enabling the new | |
| #14485 | StreamBase Studio doesn't always notice server shutdown | |
| Description | If a StreamBase Server process quits unexpectedly while running in StreamBase Studio, the IDE sometimes may not notice the server shutdown. | |
| Workaround | We recommend that you click the double-red Stop All icon ( | |
| #14507 | Tuples can be reordered when sent through loops | |
| Description | When building applications with loops, the stream with a predeclared schema (the blue stream) should be an input to the Union operator for correct performance. If the blue stream is at a different point in the loop, the application will typecheck and run, but messages may be re-ordered. For sufficiently long-running loops, resource exhaustion can occur. | |
| Workaround | If possible, ensure that the stream with a predeclared schema (the blue stream) is an input to the Union operator. | |
| #14745 | SBAPP-to-SSQL Conversion Assistant Does Not Support Parallel Operators | |
| Description | If your EventFlow .sbapp has individual operators that are marked for parallel operation, the SBAPP-to-SSQL Conversion Assistant cannot generate equivalent functionality in the generated .ssql application because there is no direct analogy for parallel operators in StreamSQL. | |
| Workaround | After the conversion, if appropriate for your application (no dependencies on data in other operations), you can use an APPLY PARALLEL MODULE ... statement or APPLY PARALLEL JDBC ... statement in the StreamSQL .ssql file. For details about the APPLY statement, see the StreamSQL Guide. | |
| #14747 | Deadlock with downstream updates of a JDBC select | |
| Description | By default, multiple Query operators connected to JDBC Table data constructs run in the same thread. That is, one Query operator waits to run until the preceding one in the flow runs to completion. As a result, deadlocks can occur when the output of one Query operator feeds the input of another, both are running in the same thread (neither is marked parallel), and both are using the same database table. | |
| Workaround | For a full discussion and options, see the section titled, Avoiding Deadlocks With JDBC Queries, in the Using JDBC Data Sources topic.For example, one workaround is to mark one or more of the Query operators as parallel to break the deadlock: in an EventFlow application set the concurrency option, as described in Using the Query Operator to Use or Modify Shared Data; in a StreamSQL application add the PARALLEL keyword to the APPLY JDBC statement, as described in APPLY Statement. | |
| #14763 | Problem when tuple in top-level module consumes large amounts of CPU time | |
| Description | If the processing of a single tuple in the top-level module consumes a large amount of CPU time, contained parallel modules that are connected directly to output streams will see their output blocked until the tuple/operator releases the CPU and the tuples can be passed to the network. | |
| Workaround | Put the time-consuming computation into its own parallel module. This workaround may not solve the issue in all cases, because inter-module queues can grow very large, but may help in many cases. | |
| #14807 | Problem running large applications in debug mode | |
| Description | Very large applications that run in standard mode may not start in debug mode, with errors such as "code too large". | |
| Workaround | Organize the application into smaller modules. | |
| #15898 | C++ Custom Aggregate functions cannot return a string | |
| Description | Custom aggregate functions that are implemented in C++ cannot return a string. | |
| Workaround | Create the custom aggregate in Java. | |
| #25004 and 25009 | Embedded Adapters and StreamSQL | |
| Description | In .ssql StreamSQL applications, you cannot specify that an embedded adapter should start in a paused state, and you cannot manage the state of a running adapter in a .ssql application (although you can with .sbapp EventFlow applications. | |
| Workaround | Use an EventFlow application with embedded adapters. | |
| #25228 | Include Package with Custom Java Functions | |
| Description | If you use a custom Java function (simple or aggregate) with no package, javac returns a compile error. | |
| Workaround | Put the function in a package. | |
| #25825 | Input Adapter output and the Application Output View | |
| Description | Input adapters that read data from files, such as CSV Input Adapter, when run under StreamBase Studio, may start so quickly that their output is not caught by the IDE, if they have completed reading the file before the IDE connects to the running server. | |
| Workaround | The workaround is to mark the adapter to start paused, and manually start it with sbadmin after the application is running. | |
| #26255 | Feed Simulation Editor's Data Rate Edit and Save Issue on Linux | |
| Description | In StreamBase Studio, the Feed Simulation Editor lets you set the rate at which data will be generated for a stream. That is, the number of tuples per second. On Linux only, if you use the keyboard to enter an integer in the Data Rate textbox, the new value might not be saved. | |
| Workaround | After clicking into the textbox and entering the value, press Enter or change the cursor's focus (for example, press Tab); then press the Save icon or enter CTRL-S. Note that if you press CTRL-S while your cursor is within the Data Rate textbox, the new value is not saved; you must press CTRL-S again. | |
| #26477 | SBAPP-to-SSQL Conversion Assistant Resets Modules Parameters to Default Value | |
| Description | If you run the SBAPP-to-SSQL Conversion Assistant on an EventFlow application that makes use of module parameter references, the resulting .ssql application will not have any module parameter references. They are replaced by their default value. | |
| Workaround | After the conversion, edit the .ssql file to add the non-default module parameter values. | |
| #26888 | Issue with Parameterized Modules and Custom Java Operators or Embedded Adapters | |
| Description | In .sbapp EventFlows, parameterized modules cannot be used with custom Java operators or embedded adapters. | |
| Workaround | Embed your custom Java operator or custom embedded adapter in a StreamSQL-defined module (see the APPLY MODULE statement in the StreamSQL Guide), and use an EventFlow module reference, through which you optionally share parameter values. | |
| #27060 | Tuple dimensions do not reset counter when another dimension closes a window early | |
| Description | A tuple-based dimension that closes due to other dimensions (for example, after another dimension times out) does not reset its counter. When this happens, the next window will close based on the total number of tuples received, resulting in a partially full dimension. | |
| Workaround | None. | |
| #27349 | Evaluation exceptions in Data Parallelism key and Subscribe predicate should not be handled by upstream operator | |
| Description | If an evaluation exception occurs for a Data Parallelism key, or in a filtered subscribe predicate, the exception is thrown and caught by the upstream operator, and reported as an error in the upstream operator. One incorrect side effect is that if one predicate in filtered subscribe fails, then predicates that come after it in the list are not executed and tuples are not delivered. Similarly, if other operators are downstream and only one is set for data parallelism, the other operators may not see tuples. Which operators see tuples is effectively non-deterministic. | |
| Workaround | Either ensure that you do not have errors in the expressions, or use catchexception() as a wrapper. | |

