Miscellaneous changes in 10.3.0 affecting backwards compatibility
The following changes in Apama 10.3.0 affect backwards compatibility to previous Apama versions:
The
Row.set() action of the MemoryStore can be used to set non-schema fields in distributed stores which support them. With previous versions, setting a field with an empty
any has set a field with the value
empty. As of this version, setting a field with an empty
any removes the non-schema field with the given name.
The
engine_deploy tool now fails to generate output when the input project contains errors. This changes the way in which the output is shown when Ant is run for an Ant-exported project. With previous versions, the Ant build was successful and the errors were shown afterwards while injecting the files. As of this version, the errors are already shown in the console when the Ant build fails.
With previous versions, the correlator incorrectly converted a float of the form
-0.0 or a decimal of the form
-0.0d to a
"0" string (that is, the minus sign was missing). As of this version, this is correctly converted to a
"-0" string. This change may lead to a backward compatibility issue for any software using Apama that is checking exclusively for
"0" strings (without minus signs) and cannot handle the case of a string of the from
"-0".
The location of the following files in your Apama installation has changed from
Apama/monitors/ to
Apama/monitors/cumulocity/9.0/:
Cumulocity_EventDefinitions.mon Cumulocity_ServiceMonitor.mon Cumulocity_Utils.mon These files were also delivered with 10.2.0.1. If you are explicitly using these files in a script or manual injection ordering, update the location of these files.
The Docker images provided by Software AG are now configured to run processes as the
sagadmin user by default within containers. For more information, see
Quick start to using an Apama image.
Previous releases of Apama in Docker Store declared the
${APAMA_WORK} directory to be a volume. This made it hard to use the work directory when creating your own derived images because of limitations on how it is handled. Therefore, the
VOLUME declaration has been removed. If you need to restore this functionality, you can add a
VOLUME statement in your own derivative Dockerfile after populating the work directory.
Apama now ships Python 3.6.6 instead of Python 2.7. You may have existing PySys tests written in Python 2 that you may wish to migrate to Python 3. It is recommended to refer to the internet for the details of what this change from Python 2 to Python 3 entails, as well as recipes for upgrading test cases. It is likely that updates will be required, particularly around the handling of strings, file I/O and print statements. There are many tools, such as 2to3.py, available to aid in this. Support for Python 2.7 is now deprecated; see also
Removed and deprecated features in 10.3.0.
Although Python 2.7 is no longer shipped, you can continue to use existing PySys tests written for Python 2 with Apama 10.3.0. However, you have to manually copy the
pysys and
apama directories from the
Apama\third_party\python\Lib\site-packages directory on Windows or the
Apama/third_party/python/lib/python2.7/site-packages directory on Linux into your own Python 2.7.13 installation. On Windows, you must also ensure that the
pywin32 library is installed into your Python 2 installation (from
https://pypi.org/).
With PySys 1.3, the
pysys.py run command now returns a non-zero exit code if any tests failed (previously, this command returned 0 on any failed tests). See also
PySys changes in 10.3.0.
The
docker module contains classes to help create and orchestrate Docker and Kubernetes images from within PySys. This module has been renamed to
apama.docker. In this release, the old name
docker can still be used, but is deprecated. If you run Python with deprecation warnings enabled, you will see a warning if you are using the old name. It is recommended that you update your tests to use
apama.docker because the
docker module name will be removed in a future release.
The
defaultValue rule of the Mapper codec will no longer always be applied to metadata fields, and instead will only be applied in the case of an empty/null metadata field. See also
The Mapper codec connectivity plug-in.