omemo / gajim-omemo

Gajim plugin for OMEMO Multi-End Message and Object Encryption
86 stars 7 forks source link

Cannot enable OMEMO after account setup #140

Closed andreygursky closed 7 years ago

andreygursky commented 7 years ago

Hi,

With a recent git snapshot (4cdd2224e15449fd7574cdf0d0f7efa8d6fdf3c7) I cannot enable OMEMO:

$ gajim
creating /home/andrey/.cache/gajim directory
creating /home/andrey/.config/gajim directory
creating /home/andrey/.cache/gajim/vcards directory
creating /home/andrey/.cache/gajim/avatars directory
creating /home/andrey/.config/gajim/pluginsconfig directory
creating logs database
creating cache database
creating /home/andrey/.config/gajim/localcerts directory
Traceback (most recent call last):
  File "/usr/share/gajim/src/plugins/helpers.py", line 114, in wrapper
    result = f(*args, **kwargs)
  File "/usr/share/gajim/src/plugins/gui.py", line 207, in installed_plugins_toggled_cb
    gajim.plugin_manager.activate_plugin(plugin)
  File "/usr/share/gajim/src/plugins/helpers.py", line 114, in wrapper
    result = f(*args, **kwargs)
  File "/usr/share/gajim/src/plugins/pluginmanager.py", line 308, in activate_plugin
    plugin.activate()
  File "/usr/share/gajim/src/plugins/helpers.py", line 107, in wrapper
    result = f(*args, **kwargs)
  File "/usr/share/gajim/plugins/omemo/__init__.py", line 248, in activate
    self.publish_bundle(account)
  File "/usr/share/gajim/src/plugins/helpers.py", line 107, in wrapper
    result = f(*args, **kwargs)
  File "/usr/share/gajim/plugins/omemo/__init__.py", line 1031, in publish_bundle
    state = self.get_omemo_state(account)
  File "/usr/share/gajim/src/plugins/helpers.py", line 107, in wrapper
    result = f(*args, **kwargs)
  File "/usr/share/gajim/plugins/omemo/__init__.py", line 197, in get_omemo_state
    self.plugin)
  File "/usr/share/gajim/plugins/omemo/omemo/state.py", line 65, in __init__
    self.store = LiteAxolotlStore(connection)
  File "/usr/share/gajim/plugins/omemo/omemo/liteaxolotlstore.py", line 48, in __init__
    self.sql = SQLDatabase(connection)
  File "/usr/share/gajim/plugins/omemo/omemo/sql.py", line 37, in __init__
    self.createDb()
  File "/usr/share/gajim/plugins/omemo/omemo/sql.py", line 90, in createDb
    self.dbConn.executescript(create_db_sql)
sqlite3.OperationalError: cannot commit transaction - SQL statements in progress
10/09/2016 20:12:57 (E) gajim.c.ged Error while running an even handler: <bound method OmemoPlugin.handle_device_list_update of <omemo.OmemoPlugin object at 0x7f81f3dae550>>
Traceback (most recent call last):
  File "/usr/share/gajim/src/common/ged.py", line 93, in raise_event
    if handler(*args, **kwargs):
  File "/usr/share/gajim/src/plugins/helpers.py", line 107, in wrapper
    result = f(*args, **kwargs)
  File "/usr/share/gajim/plugins/omemo/__init__.py", line 738, in handle_device_list_update
    state = self.get_omemo_state(account)
  File "/usr/share/gajim/src/plugins/helpers.py", line 107, in wrapper
    result = f(*args, **kwargs)
  File "/usr/share/gajim/plugins/omemo/__init__.py", line 197, in get_omemo_state
    self.plugin)
  File "/usr/share/gajim/plugins/omemo/omemo/state.py", line 65, in __init__
    self.store = LiteAxolotlStore(connection)
  File "/usr/share/gajim/plugins/omemo/omemo/liteaxolotlstore.py", line 48, in __init__
    self.sql = SQLDatabase(connection)
  File "/usr/share/gajim/plugins/omemo/omemo/sql.py", line 37, in __init__
    self.createDb()
  File "/usr/share/gajim/plugins/omemo/omemo/sql.py", line 90, in createDb
    self.dbConn.executescript(create_db_sql)
OperationalError: database is locked

This happens due to "Optimize write operations to DB" (a083f40aa391b7ba9566a71f721ec181ba145ee7).

P.S. I noticed, your new commit "Improve handling of empty/invalid devicelists" (338b310dc66350dedd1fa7afd9d9be8d2ba4edc9). It seems this fixes the issue, but your commit doesn't mention it. So was this related or not?

Thanks, Andrey

lovetox commented 7 years ago

should be fixed

https://github.com/omemo/gajim-omemo/commit/d1206043bb7cb96f87d8808a0c34c539f21a0358

thanks for reporting.