two Database syncrho

46 views
Skip to first unread message

Ari Lion BR Sp

unread,
Jun 11, 2020, 3:51:48 PM6/11/20
to web...@googlegroups.com
Hi to all, 

I am trying to  understand how to use the below feature:

DAL.distributed_transaction_commit(db_a, db_b)
mentined here:

Does web2py does the synchro work, through DAL?

Thanks!

Ari Lion BR Sp

unread,
Jun 28, 2020, 5:49:53 AM6/28/20
to web2py-users
Hi, any?

Massimo Di Pierro

unread,
Jul 1, 2020, 1:14:44 AM7/1/20
to web2py-users
Yes. Only on PostgreSQL, MySQL and Firebird. Assuming the feature has not been broken over time, I do not know of anybody who used it.

Carlos Correia

unread,
Jul 4, 2020, 8:28:50 AM7/4/20
to web...@googlegroups.com
Às 06:14 de 01/07/20, Massimo Di Pierro escreveu:

Hi, Massimo,

It seems to be broken :(


I have this piece of code in a controller to test a distributed transaction but it fails with: 
"ValueError: need more than 0 values to unpack".

def index():
    response.flash = T("Hello World")
    db0 = DAL( 'postgres://belmiro:naosei@localhost/ennos__blm_0139' )
    db1 = DAL( 'postgres://belmiro:naosei@localhost/ennos__blm_0143' )
    DAL.distributed_transaction_begin( db0, db1 )
    db0.auth_event.insert( description='test tx 0' )
    db1.auth_event.insert( description='test tx 1' )
    DAL.distributed_transaction_commit( db0, db1 )
    return dict(message=T('Welcome to web2py!'))

Stack trace:

  File ".../web2py/applications/welcome/controllers/default.py", line 12, in index
    DAL.distributed_transaction_begin( db0, db1 )
  File ".../web2py/gluon/packages/dal/pydal/base.py", line 341, in distributed_transaction_begin
    keys = ['%s.%i' % (thread_key, i) for (i, db) in instances]

Best regards,


Carlos Correia
=========================
MEMÓRIA PERSISTENTE
GSM:  917 157 146 (Signal, WhatsApp)
e-mail: ge...@memoriapersistente.pt
URL: http://www.memoriapersistente.pt
XMPP (Jabber): car...@memoriapersistente.pt
GnuPG: wwwkeys.eu.pgp.net

Carlos Correia

unread,
Jul 4, 2020, 9:08:26 AM7/4/20
to web...@googlegroups.com
Às 13:28 de 04/07/20, Carlos Correia escreveu:

Indeed it has a bug in gluon/packages/dal/pydal/base.py at lines 341 and 342, which should be switched.

341         keys = ['%s.%i' % (thread_key, i) for (i, db) in instances]
342         instances = enumerate(instances)

should be:

341         instances = enumerate(instances)
342         keys = ['%s.%i' % (thread_key, i) for (i, db) in instances]

I switched the lines, tested, and it worked as expected. Shall I open an issue on Github?

Reply all
Reply to author
Forward
0 new messages