Merge lp:~therp-nl/openupgrade-server/6.1-fix_transactions into lp:openupgrade-server/6.1

Proposed by Holger Brunn (Therp)
Status: Merged
Merged at revision: 3986
Proposed branch: lp:~therp-nl/openupgrade-server/6.1-fix_transactions
Merge into: lp:openupgrade-server/6.1
Prerequisite: lp:~therp-nl/openupgrade-server/6.1-force_deps
Diff against target: 143 lines (+48/-20)
3 files modified
openerp/addons/base/migrations/6.1.1.3/post-migration.py (+33/-16)
openerp/modules/loading.py (+2/-0)
openerp/osv/orm.py (+13/-4)
To merge this branch: bzr merge lp:~therp-nl/openupgrade-server/6.1-fix_transactions
Reviewer Review Type Date Requested Status
Holger Brunn (Therp) Approve
Review via email: mp+114357@code.launchpad.net

This proposal supersedes a proposal from 2012-06-27.

To post a comment you must log in.
Revision history for this message
Holger Brunn (Therp) (hbrunn) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'openerp/addons/base/migrations/6.1.1.3/post-migration.py'
2--- openerp/addons/base/migrations/6.1.1.3/post-migration.py 2012-06-11 09:40:30 +0000
3+++ openerp/addons/base/migrations/6.1.1.3/post-migration.py 2012-07-11 08:42:21 +0000
4@@ -8,6 +8,8 @@
5 logger = logging.getLogger('OpenUpgrade')
6 me = os.path.realpath( __file__ )
7
8+obsolete_modules = [ 'smtpclient' ]
9+
10 force_defaults = {
11 # False results in column value NULL
12 # None value triggers a call to the model's default function
13@@ -16,20 +18,35 @@
14 ]
15 }
16
17+def mark_obsolete_modules(cr):
18+ """
19+ Remove modules that are known to be obsolete
20+ in this version of the OpenERP server.
21+ """
22+ openupgrade.logged_query(
23+ cr, """
24+ UPDATE
25+ ir_module_module
26+ SET
27+ state='to remove'
28+ WHERE
29+ state='installed'
30+ AND name in %s
31+ """,
32+ (tuple(obsolete_modules),))
33+
34+@openupgrade.migrate()
35 def migrate(cr, version):
36- try:
37- logger.info("%s called", me)
38- pool = pooler.get_pool(cr.dbname)
39- openupgrade.set_defaults(cr, pool, force_defaults, force=True)
40- openupgrade.load_data(cr, 'base', 'migrations/6.1.1.3/data/base_data.xml')
41- openupgrade.load_data(cr, 'base', 'migrations/6.1.1.3/data/base_security.xml')
42- openupgrade.load_data(cr, 'base', 'migrations/6.1.1.3/data/ir.model.access.csv')
43- #force recreating module categories for all categories without xmlid
44- #this fixes addons getting wrong category_ids assigned in case of
45- #multiple categories with the same name
46- cr.execute("""
47- delete from ir_module_category where id not in
48- (select res_id from ir_model_data where model='ir.module.category')
49- """)
50- except Exception, e:
51- raise osv.except_osv("OpenUpgrade", '%s: %s' % (me, e))
52+ pool = pooler.get_pool(cr.dbname)
53+ openupgrade.set_defaults(cr, pool, force_defaults, force=True)
54+ openupgrade.load_data(cr, 'base', 'migrations/6.1.1.3/data/base_data.xml')
55+ openupgrade.load_data(cr, 'base', 'migrations/6.1.1.3/data/base_security.xml')
56+ openupgrade.load_data(cr, 'base', 'migrations/6.1.1.3/data/ir.model.access.csv')
57+ #force recreating module categories for all categories without xmlid
58+ #this fixes addons getting wrong category_ids assigned in case of
59+ #multiple categories with the same name
60+ cr.execute("""
61+ delete from ir_module_category where id not in
62+ (select res_id from ir_model_data where model='ir.module.category')
63+ """)
64+ mark_obsolete_modules(cr)
65
66=== modified file 'openerp/modules/loading.py'
67--- openerp/modules/loading.py 2012-07-11 08:42:21 +0000
68+++ openerp/modules/loading.py 2012-07-11 08:42:21 +0000
69@@ -293,6 +293,8 @@
70 #suppress commits to have the upgrade of one module in just one transation
71 cr.commit_org = cr.commit
72 cr.commit = lambda *args: None
73+ cr.rollback_org = cr.rollback
74+ cr.rollback = lambda *args: None
75
76 # register, instantiate and initialize models for each modules
77 for index, package in enumerate(graph):
78
79=== modified file 'openerp/osv/orm.py'
80--- openerp/osv/orm.py 2012-07-11 08:42:21 +0000
81+++ openerp/osv/orm.py 2012-07-11 08:42:21 +0000
82@@ -1415,11 +1415,14 @@
83 position = data.get(filename, 0)
84
85 while position<len(datas):
86+ #use savepoints for opgenupgrade instead of transactions
87+ cr.execute('SAVEPOINT process_lines');
88 (res, position, warning, res_id, xml_id) = \
89 process_liness(self, datas, [], current_module, self._name, fields_def, position=position)
90 if len(warning):
91- cr.rollback()
92+ cr.execute('ROLLBACK TO SAVEPOINT process_lines');
93 return -1, res, 'Line ' + str(position) +' : ' + '!\n'.join(warning), ''
94+ cr.execute('RELEASE SAVEPOINT process_lines');
95
96 try:
97 ir_model_data_obj._update(cr, uid, self._name,
98@@ -1450,6 +1453,8 @@
99 lng = context.get('lang', False) or 'en_US'
100 trans = self.pool.get('ir.translation')
101 error_msgs = []
102+ #use savepoints for opgenupgrade instead of transactions
103+ cr.execute('SAVEPOINT validate');
104 for constraint in self._constraints:
105 fun, msg, fields = constraint
106 if not fun(self, cr, uid, ids):
107@@ -1469,9 +1474,10 @@
108 )
109 self._invalids.update(fields)
110 if error_msgs:
111- cr.rollback()
112+ cr.execute('ROLLBACK TO SAVEPOINT validate');
113 raise except_orm('ValidateError', '\n'.join(error_msgs))
114 else:
115+ cr.execute('RELEASE SAVEPOINT validate');
116 self._invalids.clear()
117
118 def default_get(self, cr, uid, fields_list, context=None):
119@@ -2957,6 +2963,7 @@
120 # add the NOT NULL constraint
121 cr.commit()
122 try:
123+ #use savepoints for opgenupgrade instead of transactions
124 cr.execute('SAVEPOINT add_constraint');
125 cr.execute('ALTER TABLE "%s" ALTER COLUMN "%s" SET NOT NULL' % (self._table, k), log_exceptions=False)
126 cr.execute('RELEASE SAVEPOINT add_constraint');
127@@ -3238,12 +3245,14 @@
128 sql_actions.sort(key=lambda x: x['order'])
129 for sql_action in [action for action in sql_actions if action['execute']]:
130 try:
131+ #use savepoints for opgenupgrade instead of transactions
132+ cr.execute('SAVEPOINT add_constraint2');
133 cr.execute(sql_action['query'])
134- cr.commit()
135+ cr.execute('RELEASE SAVEPOINT add_constraint2');
136 _schema.debug(sql_action['msg_ok'])
137 except:
138 _schema.warning(sql_action['msg_err'])
139- cr.rollback()
140+ cr.execute('ROLLBACK TO SAVEPOINT add_constraint2');
141
142
143 def _execute_sql(self, cr):

Subscribers

People subscribed via source and target branches

to status/vote changes: