diff --git a/rhodecode/lib/audit_logger.py b/rhodecode/lib/audit_logger.py --- a/rhodecode/lib/audit_logger.py +++ b/rhodecode/lib/audit_logger.py @@ -261,7 +261,6 @@ def store(action, user, action_data=None ip_address = safe_unicode(ip_addr) with sa_session.no_autoflush: - update_user_last_activity(sa_session, user_id) user_log = _store_log( action_name=action_name, @@ -275,11 +274,15 @@ def store(action, user, action_data=None ) sa_session.add(user_log) + if commit: + sa_session.commit() + entry_id = user_log.entry_id or '' + + update_user_last_activity(sa_session, user_id) if commit: sa_session.commit() - entry_id = user_log.entry_id or '' log.info('AUDIT[%s]: Logging action: `%s` by user:id:%s[%s] ip:%s', entry_id, action_name, user_id, username, ip_address) @@ -295,4 +298,6 @@ def update_user_last_activity(sa_session log.debug( 'updated user `%s` last activity to:%s', user_id, _last_activity) except Exception: - log.exception("Failed last activity update") + log.exception("Failed last activity update for user_id: %s", user_id) + sa_session.rollback() + diff --git a/rhodecode/model/pull_request.py b/rhodecode/model/pull_request.py --- a/rhodecode/model/pull_request.py +++ b/rhodecode/model/pull_request.py @@ -1198,14 +1198,20 @@ class PullRequestModel(BaseModel): pull_request=pull_request, revision=commit_id) + # initial commit + Session().commit() + + if pr_has_changes: # send update email to users try: self.notify_users(pull_request=pull_request, updating_user=updating_user, ancestor_commit_id=ancestor_commit_id, commit_changes=commit_changes, file_changes=file_changes) + Session().commit() except Exception: log.exception('Failed to send email notification to users') + Session().rollback() log.debug( 'Updated pull request %s, added_ids: %s, common_ids: %s, ' @@ -1221,7 +1227,7 @@ class PullRequestModel(BaseModel): pull_request.pull_request_id, source_ref_id, pull_request.source_ref_parts.commit_id, pull_request_version.pull_request_version_id) - Session().commit() + self.trigger_pull_request_hook(pull_request, pull_request.author, 'update') return UpdateResponse(