← Back to team overview

group.of.nepali.translators team mailing list archive

[Bug 1616116] Re: Unrecoverable resyncs if DB is restored from backup

 

** Also affects: landscape-client (Ubuntu Xenial)
   Importance: Undecided
       Status: New

** Changed in: landscape-client (Ubuntu Xenial)
       Status: New => In Progress

** Changed in: landscape-client (Ubuntu Xenial)
   Importance: Undecided => Medium

** Changed in: landscape-client (Ubuntu Xenial)
     Assignee: (unassigned) => Simon Poirier (simpoir)

-- 
You received this bug notification because you are a member of नेपाली
भाषा समायोजकहरुको समूह, which is subscribed to Xenial.
Matching subscriptions: Ubuntu 16.04 Bugs
https://bugs.launchpad.net/bugs/1616116

Title:
  Unrecoverable resyncs if DB is restored from backup

Status in Landscape Client:
  Fix Committed
Status in landscape-client package in Ubuntu:
  Fix Released
Status in landscape-client source package in Trusty:
  In Progress
Status in landscape-client source package in Xenial:
  In Progress
Status in landscape-client source package in Bionic:
  In Progress
Status in landscape-client source package in Cosmic:
  In Progress

Bug description:
  [Impact]

   * In some cases generally involving backups/restore, client would get
     inconsistent package data and keep that data upon resync, thus getting
     stuck in a resync loop. This usually gets noticed through the stress
     it adds on the server and though logs which grow abnormally.

  [Test Case]

    * deploy landscape-server quickstart from ppa:landscape/18.03
    * register client against server. wait for package info
    * pg_dumpall
    * add a repo and wait for new package to show on in landscape.
    * restore the postgres backup.
    * run ./scripts/hash_id_databases.sh from the server to complete
      the restore. 
    * trigger a package install from the new repo to create some package
      info to update
    * client should resync once then will re-fetch hash on the next run.

  [Regression Potential]

   * Modified code is used only during resync operations and removes
     cached data when the client state is deemed inconsistent.

   * In the unlikely event the code is called outside of the expected
     cases, the end result would be limited to the package-monitor 
     having to re-download the hash-id databases, which shouldn't
     cause issues as that is the behaviour at client registration.

  [Other Info]
   
   * Other cases than server restores have been noticed to generate the
     bug but they are far less common.

  [Original description]

  Landscape with live clients cannot handle a DB restore to a point in
  the past.

  The scenario is Landscape running as usual, with live clients,
  restoring to a DB backup taken in the past. After the service ir
  brought up again with this data, clients will start resyncing and
  becoming wedged with all sorts of tracebacks on the message server.

  I left such a scenario running overnight, hoping that eventually the
  resyncs would settle down and everything recover, but that didn't
  happen. The resyncs continued, in the packages scope.

  An interesting one in particular was this:
  Aug 22 21:46:26 message-server-2 ERR  Error handling message 'operation-result' for computer 104: {'status': 6, 'timestamp': 1471901963, 'result-text': u'Mon Aug 22 21:39:23 UTC 2016\n', 'api': '3.3', 'operation-id': 533, 'type': 'operation-result'}#012Traceback (most recent call last):#012  File "/opt/canonical/landscape/canonical/landscape/message/apis.py", line 358, in _process_messages#012    self.handle(message["type"], message)#012  File "/opt/canonical/landscape/canonical/message/api.py", line 66, in handle#012    return handler(type, body)#012  File "/opt/canonical/landscape/canonical/message/handler.py", line 30, in __call__#012    return function(self.message_api, type, body)#012  File "/opt/canonical/landscape/canonical/lib/arguments.py", line 79, in replacement#012    return original(*new_args, **new_kwargs)#012  File "/opt/canonical/landscape/canonical/landscape/message/handlers/activity.py", line 32, in handle_activity_result#012    activity.succeed(code=result_code, text=result_text)#012AttributeError: 'NoneType' object has no attribute 'succeed'

  That was about an activity that had been delivered already, but did
  not exist in the restored DB.

To manage notifications about this bug go to:
https://bugs.launchpad.net/landscape-client/+bug/1616116/+subscriptions