Exemplo n.º 1
0
    def test_constrained_port_update_handles_db_retries(self):
        # here we ensure all of the constraint handling logic persists
        # on retriable failures to commit caused by races with another
        # update
        with self.port() as port:
            rev = port['port']['revision_number']
            new = {'port': {'name': 'nigiri'}}

            def concurrent_increment(s):
                db_api.sqla_remove(se.Session, 'before_commit',
                                   concurrent_increment)
                # slip in a concurrent update that will bump the revision
                self._update('ports', port['port']['id'], new)
                raise db_exc.DBDeadlock()
            db_api.sqla_listen(se.Session, 'before_commit',
                               concurrent_increment)
            self._update('ports', port['port']['id'], new,
                         headers={'If-Match': 'revision_number=%s' % rev},
                         expected_code=exc.HTTPPreconditionFailed.code)
Exemplo n.º 2
0
    def test_constrained_port_update_handles_db_retries(self):
        # here we ensure all of the constraint handling logic persists
        # on retriable failures to commit caused by races with another
        # update
        with self.port() as port:
            rev = port['port']['revision_number']
            new = {'port': {'name': 'nigiri'}}

            def concurrent_increment(s):
                db_api.sqla_remove(se.Session, 'before_commit',
                                   concurrent_increment)
                # slip in a concurrent update that will bump the revision
                plugin = directory.get_plugin()
                plugin.update_port(nctx.get_admin_context(),
                                   port['port']['id'], new)
                raise db_exc.DBDeadlock()
            db_api.sqla_listen(se.Session, 'before_commit',
                               concurrent_increment)
            self._update('ports', port['port']['id'], new,
                         headers={'If-Match': 'revision_number=%s' % rev},
                         expected_code=exc.HTTPPreconditionFailed.code)
Exemplo n.º 3
0
 def __init__(self):
     super(RevisionPlugin, self).__init__()
     db_api.sqla_listen(se.Session, 'before_flush', self.bump_revisions)
     db_api.sqla_listen(se.Session, 'after_commit',
                        self._clear_rev_bumped_flags)
     db_api.sqla_listen(se.Session, 'after_rollback',
                        self._clear_rev_bumped_flags)
Exemplo n.º 4
0
 def __init__(self):
     super(LokiPlugin, self).__init__()
     db_api.sqla_listen(se.Session, 'before_flush', self.random_deadlock)
     db_api.sqla_listen(se.Session, 'loaded_as_persistent',
                        self.random_delay)
Exemplo n.º 5
0
 def __init__(self):
     super(RevisionPlugin, self).__init__()
     for resource in standard_attr.get_standard_attr_resource_model_map():
         db_base_plugin_v2.NeutronDbPluginV2.register_dict_extend_funcs(
             resource, [self.extend_resource_dict_revision])
     db_api.sqla_listen(se.Session, 'before_flush', self.bump_revisions)
Exemplo n.º 6
0
 def __init__(self):
     super(RevisionPlugin, self).__init__()
     db_api.sqla_listen(se.Session, 'before_flush', self.bump_revisions)
Exemplo n.º 7
0
 def __init__(self):
     super(LokiPlugin, self).__init__()
     db_api.sqla_listen(se.Session, 'before_flush', self.random_deadlock)
     db_api.sqla_listen(se.Session, 'loaded_as_persistent',
                        self.random_delay)
Exemplo n.º 8
0
 def __init__(self):
     super(RevisionPlugin, self).__init__()
     db_api.sqla_listen(se.Session, 'before_flush', self.bump_revisions)