'Update metadata, timestamps, sync points.'

def _handle_sync_request(self, broker, remote_info):

    with self.debug_timing('info'):
        try:
            info = self._get_synced_replication_info(broker, remote_info)
        except (Exception, Timeout) as e:
            if ('no    such    table' in str(e)):
                self.logger.error(_('Quarantining    DB    %s'), broker)
                quarantine_db(broker.db_file, broker.db_type)
                return HTTPNotFound()
            raise
    if remote_info['metadata']:
        with self.debug_timing('update_metadata'):
            broker.update_metadata(remote_info['metadata'])
    sync_timestamps = ('created_at', 'put_timestamp', 'delete_timestamp')
    if any(((info[ts] != remote_info[ts]) for ts in sync_timestamps)):
        with self.debug_timing('merge_timestamps'):
            broker.merge_timestamps(*(remote_info[ts] for ts in sync_timestamps))
    with self.debug_timing('get_sync'):
        info['point'] = broker.get_sync(remote_info['id'])
    if ((remote_info['hash'] == info['hash']) and (info['point'] < remote_info['point'])):
        with self.debug_timing('merge_syncs'):
            translate = {'remote_id': 'id', 'sync_point': 'point'}
            data = dict(((k, remote_info[v]) for (k, v) in translate.items()))
            broker.merge_syncs([data])
            info['point'] = remote_info['point']
    return Response(json.dumps(info))
