[openstack-announce] [release][stable][mistral] mistral 1.0.1 release (liberty)

no-reply at openstack.org no-reply at openstack.org
Tue Feb 16 19:18:26 UTC 2016


We are excited to announce the release of:

mistral 1.0.1: Mistral Project

This release is part of the liberty stable release series.

With package available at:

    https://pypi.python.org/pypi/mistral

For more details, please see below.

1.0.1
^^^^^

Bug Fixes

* [bug 1518012 (https://bugs.launchpad.net/keystone/+bug/1518012)]
  [bug 1513456 (https://bugs.launchpad.net/keystone/+bug/1513456)]

  Fix concurrency issues by using READ_COMMITTED

  This release note describes bugs:
     * #1513456 - task stuck in RUNNING state when all action
       executions are finished regarding the problem and the fix.

     * #1518012- WF execution stays in RUNNING although task and
       action executions are in SUCCESS.

  This fix does not require any action from Mistral users and does not
  have any implications other than the bug fix.

  The state of a workflow execution was not updated even when all task
  executions were completed if some tasks finished at the same time as
  other tasks.

  Because we were using our connections with transaction isolation
  level = REPEATABLE_READ - Each process was using a snapshot of the
  DB created at the first read statement in that transaction. When a
  task finished and evaluated the state of all the other tasks it did
  not see the up-to-date state of those tasks - and so, because not
  all tasks were completed - the task did not change the workflow
  execution state.

  Similar behavior happened with multiple action executions under same
  task. On completion, each action execution checked the status of the
  other action executions and did not see the up-to-date state of
  these action execution - causing task execution to stay in RUNNING
  state.

  The solution is to change DB transaction isolation level from
  REPEATABLE_READ to READ_COMMITTED so process A can see changes
  committed in other transactions even if process A is in the middle
  of a transaction.

  A short explaination regarding the different isolation levels:

     *


    REPEATABLE_READ - while in transaction, the first read operation
    to the DB creates a snapshot of the entire DB so you are guarantee
    that all the data in the DB will remain the same until the end of
    the transaction.

    REPEATABLE_READ example:
       * ConnectionA selects from tableA in a transaction.

       * ConnectionB deletes all rows from tableB in a transaction.

       * ConnectionB commits.

       * ConnectionA loops over the rows of tableA and fetches from
         tableB using the tableA_tableB_FK - ConnectionA will get rows
         from tableB.

     *


    READ_COMMITTED - while in a transaction, every query to the DB
    will get the committed data.

    READ_COMMITTED example:
       * ConnectionA starts a transaction.

       * ConnectionB starts a transaction.

       * ConnectionA insert row to tableA and commits.

       * ConnectionB insert row to tableA.

       * ConnectionB selects tableA and gets two rows.

       * ConnectionB commits / rollback.

  Two good articles about isolation levels are:
     * Differences between READ-COMMITTED and REPEATABLE-READ
       transaction isolation levels
       (https://www.percona.com/blog/2015/01/14/mysql-performance-
       implications-of-innodb-isolation-modes/).

     * MySQL performance implications of InnoDB isolation modes
       (https://www.percona.com/blog/2012/08/28/differences-between-
       read-committed-and-repeatable-read-transaction-isolation-
       levels/).

Changes in mistral 1.0.0..1.0.1
-------------------------------

aed10de Revert "Add ceilometer action support"
ff2c51c Revert "Add Trove to mistral actions"
835d819 Add Trove to mistral actions
097e5cd Updated from global requirements
09f206f Fix concurrency issues by using READ_COMMITTED
eeb72e2 Fixing execution saved in wrong tenant
5895441 Updated from global requirements
8c1b5ef Add database indices to improve query performance
50f76b7 Force releasenotes warnings to be treated as errors
543171d Adding releasenotes management to Mistral
5bee630 Send mail to mutli to_addrs failed.
b2aa981 Ensure only one WF execution for every CT cycle
33fb462 Avoid comparision between "None" type and "int" type.
501c912 Fixed some unit test issue.
9775b39 Adding callback url to action context
9581f2e Fixing SSH actions to use names of private keys
f7cb207 Do not use len() in log_exec decorator
be796de Fix all H405 pep8 errors
909ce29 Remove iso8601 dependency
84243f5 Remove kombu as a dependency for Mistral
73d783e Removing wait() when initializing notification listener
84c46be Fix state change on exception during task state change
ef886d1 Updated from global requirements
15e42a5 Fixing reference of floating_ips_client in tests
55468eb Pass creds into the clients.Manager() in functional tests
6986c59 Increased size of "state_info" column to 64kb.
e09ec65 Wrap sync_db operations in transactions
99a804d Fixing workflow execution state calculation
b8e1f95 Fixing wf execution creation at initial stage
b56b6a5 Add ceilometer action support
bd8927d Updated from global requirements
0d80177 Updated from global requirements
7d7d3da Fix mistral dsvm gate
3c5fbf5 Updated from global requirements
bf9266d Updated from global requirements
4e4921d Switch stable/liberty to post-versioning

Diffstat (except docs and test files)
-------------------------------------

.gitignore                                         |   3 +
mistral/actions/std_actions.py                     |  19 +-
mistral/api/controllers/v2/environment.py          |   1 +
mistral/api/hooks/content_type.py                  |   4 +-
mistral/cmd/launch.py                              |  29 +-
mistral/config.py                                  |   1 -
mistral/db/sqlalchemy/base.py                      |  32 ++-
.../008_increase_size_of_state_info_column.py      |  34 +++
.../versions/009_add_database_indices.py           | 210 ++++++++++++++
mistral/db/sqlalchemy/model_base.py                |   4 +-
mistral/db/v2/api.py                               |   6 +-
mistral/db/v2/sqlalchemy/api.py                    |  56 +++-
mistral/db/v2/sqlalchemy/models.py                 |  58 +++-
mistral/engine/default_engine.py                   |  86 +++---
mistral/engine/rpc.py                              |   6 +-
mistral/services/action_manager.py                 |  51 ++--
mistral/services/actions.py                        |  37 ++-
mistral/services/expiration_policy.py              |   2 +-
mistral/services/periodic.py                       | 102 +++++--
mistral/services/scheduler.py                      |  21 +-
mistral/services/triggers.py                       |   2 +-
mistral/services/workflows.py                      |  45 ++-
.../functional/api/v2/test_mistral_basic_v2.py     |  42 ++-
.../engine/actions/v2/test_ssh_actions.py          |  31 ++-
.../unit/engine/test_direct_workflow_rerun.py      |   2 +
.../test_execution_fields_size_limitation.py       |  18 +-
mistral/utils/__init__.py                          |  20 +-
mistral/utils/javascript.py                        |   3 +-
mistral/utils/rest_utils.py                        |   8 +-
mistral/utils/ssh_utils.py                         |  29 +-
mistral/workflow/direct_workflow.py                |  12 +-
mistral/workflow/reverse_workflow.py               |   6 +-
mistral/workflow/with_items.py                     |  13 +-
releasenotes/notes/.placeholder                    |   0
...n-level-to-read-committed-7080833ad284b901.yaml |  66 +++++
releasenotes/source/_static/.placeholder           |   0
releasenotes/source/_templates/.placeholder        |   0
releasenotes/source/conf.py                        | 272 ++++++++++++++++++
releasenotes/source/index.rst                      |   9 +
releasenotes/source/liberty.rst                    |   6 +
releasenotes/source/unreleased.rst                 |   5 +
requirements.txt                                   |  14 +-
setup.cfg                                          |   1 -
test-requirements.txt                              |   1 +
tox.ini                                            |   4 +-
70 files changed, 1743 insertions(+), 345 deletions(-)


Requirements updates
--------------------

diff --git a/requirements.txt b/requirements.txt
index f6f445a..42b5e9f 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -9 +8,0 @@ eventlet>=0.17.4
-iso8601>=0.1.9
@@ -11,2 +10 @@ jsonschema!=2.5.0,<3.0.0,>=2.0.0
-keystonemiddleware>=2.0.0
-kombu>=3.0.7
+keystonemiddleware!=2.4.0,>=2.0.0
@@ -18,2 +16,2 @@ oslo.db>=2.4.1 # Apache-2.0
-oslo.messaging!=1.17.0,!=1.17.1,>=1.16.0 # Apache-2.0
-oslo.utils>=2.0.0 # Apache-2.0
+oslo.messaging!=1.17.0,!=1.17.1,!=2.6.0,!=2.6.1,!=2.7.0,!=2.8.0,!=2.8.1,!=2.9.0,!=3.1.0,>=1.16.0 # Apache-2.0
+oslo.utils!=2.6.0,>=2.0.0 # Apache-2.0
@@ -29 +27 @@ python-heatclient>=0.3.0
-python-keystoneclient>=1.6.0
+python-keystoneclient!=1.8.0,>=1.6.0
@@ -31 +29 @@ python-neutronclient>=2.6.0
-python-novaclient>=2.28.1
+python-novaclient!=2.33.0,>=2.28.1
@@ -33 +31 @@ PyYAML>=3.1.0
-requests!=2.8.0,>=2.5.2
+requests!=2.8.0,!=2.9.0,>=2.5.2
diff --git a/test-requirements.txt b/test-requirements.txt
index 5c7d264..306262f 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -17,0 +18 @@ unittest2
+reno>=0.1.1 # Apache2





More information about the OpenStack-announce mailing list