-
Notifications
You must be signed in to change notification settings - Fork 501
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
Fix unnecessary locking in Authentication Service; improve Publish #6918
Comments
|
landreev
added a commit
that referenced
this issue
Jul 20, 2020
… conditions. MUCH SIMPLIFIED, in terms of the number of files that had to be modified; but should be even more effective in ensuring that the service should never become locked under normal operating conditions. (#6918)
landreev
added a commit
that referenced
this issue
Jul 23, 2020
landreev
added a commit
that referenced
this issue
Jul 23, 2020
landreev
added a commit
that referenced
this issue
Jul 27, 2020
landreev
added a commit
that referenced
this issue
Jul 27, 2020
landreev
added a commit
that referenced
this issue
Jul 27, 2020
…FT" to the url (?). Was pre-existing - but why not. (#6918)
landreev
added a commit
that referenced
this issue
Jul 28, 2020
landreev
added a commit
that referenced
this issue
Jul 29, 2020
landreev
added a commit
that referenced
this issue
Aug 5, 2020
…for RestAssured to work; but also some changes for the application proper to address some problematic things in the execution framework of the publish commands. Will explain more in the PR. (#7159)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
See #IQSS/dataverse.harvard.edu/issues/73 for the details on the investigation. AuthenticationServiceBean being a
@Singleton
, without any@Lock
or@ConcurrencyManagement
annotations, defaults to being a locking time bomb, with the capacity to paralyze the entire application. The simple solution is to move the methods that don't need to be locking out of the service, and into a regular@Stateless
bean. Though it'll probably be cleaner to create a new@Singleton
bean - AuthenticationProviderRegistrationService? - and move the provider registration methods there (the original intended purpose of the service bean); and leave the methods that do "normal" work in AuthenticatonService, changing it to@Stateless
.Part 2: We were exceptionally lucky that this wasn't happening with any regularity before, because we are more or less ASKING FOR IT. If publishing a dataset, in the synchronous mode takes any time at all, the spinner goes away very quickly, and then "nothing happens" - which all but encourages the user to click the publish button again. Making the service methods above non-locking will not stop these multiple Publish commands from blocking each other. But it will of course prevent them from locking up the entire application.
2 things:
EditInProgress
when saving changes.The dataset that was causing havoc yesterday has 10 files - right under the cutoff, so it was being done synchronously, and they appear to have tried to publish it 4 times, in parallel.
I suggest we address both the evil singleton and the "publish lock" part above in one PR - because why not.
The text was updated successfully, but these errors were encountered: