Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

presence: No autocommit+rollback if no active watchers #3183

Merged
merged 1 commit into from Jul 12, 2022
Merged

presence: No autocommit+rollback if no active watchers #3183

merged 1 commit into from Jul 12, 2022

Conversation

Ozzyboshi
Copy link

Pre-Submission Checklist

  • Commit message has the format required by CONTRIBUTING guide
  • Commits are split per component (core, individual modules, libs, utils, ...)
  • Each component has a single commit (if not, squash them into one commit)
  • No commits to README files for modules (changes must be done to docbook files
    in doc/ subfolder, the README file is autogenerated)

Type Of Change

  • Small bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds new functionality)
  • Breaking change (fix or feature that would change existing functionality)

Checklist:

  • PR should be backported to stable branches
  • Tested changes locally
  • Related to issue #XXXX (replace XXXX with an open issue number)

Description

This is a small performance improvement, the goal is to avoid issuing rollbacks if not necessary.
On my setup, Kamailio presence executes a lot of ROLLBACKS in MariaDB since function process_dialogs() runs repeatedly.
What see inside MariaDB logs is the following

SET autocommit=0
select `presentity_uri`,`callid`,`to_tag`,`from_tag`,`event` from `active_watchers` where `updated`=3 AND `event`<>'presence.winfo'\G
ROLLBACK

Maybe we can improve this behaviour telling presence to do autocommit to do not execute them if the select returns zero elements?

-  In case the active_watcher query returns no elements there
   is a weird situation where kamailio first runs the select for
   active_watcher then rollbacks.
   This can happen a lot of times for each second since function
   process_dialogs() runs repeatedly.
   For this reason trying to avoid the rollback can result
   in a quite good performance boost.
@miconda
Copy link
Member

miconda commented Jul 12, 2022

Maybe we can improve this behaviour telling presence to do autocommit to do not execute them if the select returns zero elements?

I am not sure I understand what you wanted to ask? Maybe you can elaborate more.

@linuxmaniac
Copy link
Member

The thing here is to avoid using database transaction to select and just use it if there's going to be update commands later

@miconda
Copy link
Member

miconda commented Jul 12, 2022

@linuxmaniac: that's about the current patch of this PR, right? I wanted to clarify if @Ozzyboshi wants to propose another improvement that covers the case of current PR as well.

From my point of view, the PR can be merged, if no improvement/alternative is been planned in the near future.

@linuxmaniac linuxmaniac merged commit c80cccd into kamailio:master Jul 12, 2022
@linuxmaniac
Copy link
Member

yes, this is about this patch. No other improvements or alternatives were planned

@miconda
Copy link
Member

miconda commented Jul 12, 2022

It was the question at the end of @Ozzyboshi PR description that I wanted to clarify.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants