Restrictions and known bugs¶
- streamsx versions 2.0 and higher are incompatible with Cloud Pak for Data less than version 3.5.0.0 
- For use of streamsx 2.0, the com.ibm.streamsx.iot toolkit must be updated to minimum version 1.3.0 on the build service or a local Streams installation. Otherwise dependency errors will occur when the application is compiled: - /opt/ibm/streams/bin/sc -M `cat main_composite.txt` ... CDISP0384E ERROR: The <application> toolkit requires version 2.0.0 of the com.ibm.streamsx.topology toolkit, but version 1.17.0 of the required toolkit is currently installed. CDISP0884W WARNING: Errors occurred while the toolkits were loading. CDISP0092E ERROR: Because of previous compilation errors, the compile process cannot continue. make: *** [all] Error 1 Exception in thread "main" java.lang.IllegalStateException: Error submitting archive for build: <build-ID> - When this error occurs, the IOT-Toolkit must be updated or added to the toolkit path (for example environment variable STREAMS_SPLPATH). To update the IoT toolkit on the CP4D buildservice to version 1.3.0, follow these steps: - download the toolkit version 1.3.0 tarball from the toolkits release page on GitHub. 
- cdto your download location
- unpack the downloaded tarball: - tar -zxf streamsx.iot.toolkits-1.3.0-20201208-1147.tgz
- upload the toolkit: - streamsx-streamtool [--disable-ssl-verify] uploadtoolkit --path com.ibm.streamsx.iot
- you can verify that the new version is present, with - streamsx-streamtool [--disable-ssl-verify] lstoolkit --name com.ibm.streamsx.iot. The old and the new version should be listed.
 
- A job that is submitted with streamsx-streamtool to a Cloud Pak for Data with version above 3.0 is only visible in the Streams Console. 
- Job submission from a Python notebook within a CP4D project on Cloud Pak for Data with version above 3.0 may fail with exception message - CDIST3419E: Submission failed. Please provide the CP4D URL in your submission configuration. - In this case, specify the CP4D URL, for example from your browser’s address bar, in the submission configuration, for example: - cfg = ... cfg[ConfigParams.CP4D_URL] = 'https://cp4d-cluster.com' submission_result = submit(ContextTypes.DISTRIBUTED, topology, cfg) 
- For Python development outside of a CP4D, for example with a Jupyter notebook outside of CP4D, you must use an Anaconda or Miniconda Python installation. 
- No support for nested parallel regions at sources, i.e. nested - streamsx.topology.topology.Stream.set_parallel(), for example:- topo = Topology() s = topo.source(S()) s.set_parallel(3).set_parallel(2) - In this example, set_parallel(3) is ignored. 
- When tuples are nested within other tuples in a stream schema, the call style of instances of StreamSchema for a callable is always dict, whatever value the style property has. When the return value of a callable represents also a structured schema with nested tuples, the return type must also be a dict. Otherwise the behaviour is not defined. 
- No schema support for container types (list, map, set, and the like) with non-primitive value or element types as value or element types for other containers, also when encapsulated in a named tuple: - class A_schema(typing.NamedTuple): x: int y: int class B_schema(typing.NamedTuple): a_list: typing.List[A_schema] # supported, A_schema does not contain a container type at all class C_schema(typing.NamedTuple): c1: str c2: B_schema # supported, a container type can be nested at any depth class D_schema(typing.NamedTuple): d1: str d2: typing.Mapping[int, typing.List[int] # supported d3: typing.Mapping[int, typing.List[A_schema] # not supported: a container with non-primitive element type is direct value type of a map class E_schema(typing.NamedTuple): e1: bool e2: typing.Mapping[str, C_schema] # not supported: C_schema.c2.a_list is a list with non-primitive element type 
- Schemas support only primitive types for the key type of a map: - class A_schema(typing.NamedTuple): a1: int a2: int class B_schema(typing.NamedTuple): b1: str b2: typing.Mapping[str, A_schema] # supported b3: typing.Mapping[A_schema, str] # not supported, A_schema not supported as key type 
- Schemas support only primitive types as element type of a set: - class A_schema(typing.NamedTuple): a1: int a2: int class B_schema(typing.NamedTuple): b1: int b2: typing.Set[int] # supported b3: typing.Set[A_schema] # not supported 
- Python Composites (derived from - streamsx.topology.composite.Composite) can have only one input port.
- No support to process final marker (end of stream) in Python Callables like in SPL operators 
- No hook for drain processing in consistent region for Python Callables 
- Submission time parameters, which are defined in SPL composites of other toolkits, or created by using streamsx.spl.op.Expression in the topology, cannot be accessed at runtime with streamsx.ec.get_submission_time_value(name). 
- The time-interval window ( - streamsx.topology.topology.Stream.time_interval()) is not supported by- streamsx.topology.topology.Window.aggregate(). Use the spl.relational::Aggregate operator in an event-time stream.