How does the user picker work in JIRA applications
JIRA applications use the user picker for the assignee and reporter field, as well as custom user or group picker field. With AJAX, the user picker will return possible results on each entry. However, there is no documentation on how it works from the background.
How does JIRA applications user picker work?
- The user picker first figures out the group via Project -> Role -> Group (i.e. determines that the assignable users for project X are the users in the role Y, and therefore the users in the group Z).
- This fires a REST call on every keystroke, depending on how fast the characters are entered.
- It uses the configured User Directories (AD, Crowd...) to get a list of users that belong to group Z.
- Matches the entered characters with the user name, the email address and display name.
- The User Picker's auto suggest feature requires the Browse User's Global Permissions to work. Without this permission, users would only be able to specifically add exact usernames.
Can you change the REST call interval?
Unfortunately no. It will do a request 75 millisecond after entering a character. If the user enters another character in that 75ms period, it will restart the timer. In other words, if the user types the name really fast, it won't do a search until the full name has been entered. A way to force that behaviour is to write the username somewhere else, copy and paste it into the field: that will result in just one REST call.
Will the way that the user picker works cause performance issues?
It's possible that this could cause performance problems in some particular circumstances. There are a two potential problems:
- If the user has multiple User Directories, searching for the members of a group could be slow.
Solution: reduce the number of User Directories and/or move the User Directory that will contain the requested group at the top of the preference chain.
- If the project has a very broad assignable group, (eg: all the users in a JIRA application are potentially assignable, but only a bunch of them are actually assigned), retrieving the list of users and matching the characters could be expensive.
Solution: create a smaller assignable group, it is better to add users when needed, than to add lots of JIRA applications users that never get an issue assigned.