Commit 86433af0 authored by Kazuhiko Shiozaki's avatar Kazuhiko Shiozaki

ERP5Site: add erp5_sql_read_committed_connection.

parent 08b24082
......@@ -50,6 +50,7 @@ from Products.ERP5Type.mixin.response_header_generator import ResponseHeaderGene
from zLOG import LOG, INFO, WARNING, ERROR
from zExceptions import BadRequest
import os
import re
import warnings
import transaction
from App.config import getConfiguration
......@@ -84,7 +85,7 @@ def manage_addERP5Site(self,
validate_email=0,
erp5_catalog_storage='erp5_mysql_innodb_catalog',
erp5_sql_connection_string=default_sql_connection_string,
cmf_activity_sql_connection_string=default_sql_connection_string,
cmf_activity_sql_connection_string='!READ-COMMITTED %s' % default_sql_connection_string,
bt5_repository_url='',
bt5='',
id_store_interval='',
......@@ -2281,7 +2282,9 @@ class ERP5Generator(PortalGenerator):
# The only difference compared to activity connection is the
# minus prepended to the connection string.
if id == 'erp5_sql_transactionless_connection':
connection_string = '-' + p.cmf_activity_sql_connection_string
connection_string = re.sub(r'((?:[%*][^ ]+ )*)(![^ ]+ )?(.+)', r'\1-\3', p.cmf_activity_sql_connection_string)
elif id == 'erp5_sql_read_committed_connection':
connection_string = re.sub(r'((?:[%*][^ ]+ )*)(![^ ]+ )?(.+)', r'\1!READ-COMMITTED \3', p.erp5_sql_connection_string)
else:
connection_string = getattr(p, id + '_string')
manage_add(id, title, connection_string, **kw)
......@@ -2292,6 +2295,8 @@ class ERP5Generator(PortalGenerator):
manage_add = p.manage_addProduct['ZMySQLDA'].manage_addZMySQLConnection
addSQLConnection('erp5_sql_connection',
'ERP5 SQL Server Connection')
addSQLConnection('erp5_sql_read_committed_connection',
'ERP5 SQL Server Isolated Connection')
addSQLConnection('erp5_sql_deferred_connection',
'ERP5 SQL Server Deferred Connection',
deferred=True)
......
......@@ -102,17 +102,20 @@ def _getConnectionStringDict():
connection_string_dict = {}
default = os.environ.get('erp5_sql_connection_string')
for connection in ('erp5_sql_connection_string',
'erp5_sql_deferred_connection_string',
# default value for transactionless is derived from value
# for cmf_activity, so process it last
'cmf_activity_sql_connection_string'):
'erp5_sql_deferred_connection_string'):
connection_string = os.environ.get(connection, default)
if connection_string:
connection_string_dict[connection] = connection_string
connection = 'cmf_activity_sql_connection_string'
connection_string_dict[connection] = \
os.environ.get(connection, re.sub(
r'((?:[%*][^ ]+ )*)(![^ ]+ )?(.+)', r'\1!READ-COMMITTED \3', connection_string_dict['erp5_sql_connection_string']))
# default value for transactionless is derived from value
# for cmf_activity, so process it last
connection = 'erp5_sql_transactionless_connection_string'
if os.environ.get(connection, connection_string):
connection_string_dict[connection] = \
os.environ.get(connection, '-' + connection_string)
connection_string_dict[connection] = \
os.environ.get(connection, re.sub(
r'((?:[%*][^ ]+ )*)(![^ ]+ )?(.+)', r'\1-\3', connection_string_dict['cmf_activity_sql_connection_string']))
return connection_string_dict
def _getConversionServerUrlList():
......
......@@ -65,7 +65,7 @@ Options:
--cmf_activity_sql_connection_string=STRING
ZSQL Connection string for
cmf_activity_sql_connection (if unset, defaults to
erp5_sql_connection_string)
erp5_sql_connection_string with "!READ-COMMITTED")
--extra_sql_connection_string_list=STRING
Used when 2 or more ZSQL connection strings are
needed. By defaut, it will take the last four
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment