{"action":"created","issue":{"url":"https://api.github.com/repos/IQSS/dataverse/issues/5345","repository_url":"https://api.github.com/repos/IQSS/dataverse","labels_url":"https://api.github.com/repos/IQSS/dataverse/issues/5345/labels{/name}","comments_url":"https://api.github.com/repos/IQSS/dataverse/issues/5345/comments","events_url":"https://api.github.com/repos/IQSS/dataverse/issues/5345/events","html_url":"https://github.com/IQSS/dataverse/issues/5345","id":384807262,"node_id":"MDU6SXNzdWUzODQ4MDcyNjI=","number":5345,"title":"Proposal: make persistent EJB timers non-persistent","user":{"login":"poikilotherm","id":5468333,"node_id":"MDQ6VXNlcjU0NjgzMzM=","avatar_url":"https://avatars3.githubusercontent.com/u/5468333?v=4","gravatar_id":"","url":"https://api.github.com/users/poikilotherm","html_url":"https://github.com/poikilotherm","followers_url":"https://api.github.com/users/poikilotherm/followers","following_url":"https://api.github.com/users/poikilotherm/following{/other_user}","gists_url":"https://api.github.com/users/poikilotherm/gists{/gist_id}","starred_url":"https://api.github.com/users/poikilotherm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/poikilotherm/subscriptions","organizations_url":"https://api.github.com/users/poikilotherm/orgs","repos_url":"https://api.github.com/users/poikilotherm/repos","events_url":"https://api.github.com/users/poikilotherm/events{/privacy}","received_events_url":"https://api.github.com/users/poikilotherm/received_events","type":"User","site_admin":false},"labels":[{"id":435707518,"node_id":"MDU6TGFiZWw0MzU3MDc1MTg=","url":"https://api.github.com/repos/IQSS/dataverse/labels/Status:%20Code%20Review","name":"Status: Code Review","color":"e6e6e6","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":9,"created_at":"2018-11-27T13:58:27Z","updated_at":"2019-01-03T12:37:19Z","closed_at":null,"author_association":"CONTRIBUTOR","body":"This is related to #5292 and a story of that epic.\r\nAs [`DataverseTimerServiceBean.java`](https://github.com/IQSS/dataverse/blob/develop/src/main/java/edu/harvard/iq/dataverse/timer/DataverseTimerServiceBean.java) has been mostly written and maintained by @landreev, this most certainly is for him...\r\n\r\n### Context\r\nCurrently, in [`glassfish-setup.sh`](https://github.com/IQSS/dataverse/blob/0045cd6368e0d3fee8fd7e37ec87d7d1233ae30d/scripts/installer/glassfish-setup.sh#L127) you need to setup a database connection for storage of persistent EJB timers.\r\n\r\nReusing the database for Dataverse for EJB timers is alright, but it is not easy to depict when heading for containers. It is much easier for container approaches to use application scoped JDBC connections, but those seem not to be reusable for EJB timers.\r\n\r\nThere seemed to be some issues in the past, too. #3672, #3789 and more.\r\n\r\n### Proposal\r\n*Just remove the persistent nature of timers.*\r\n\r\n* They are created on each startup on the timing server ([see docs](http://guides.dataverse.org/en/latest/admin/timers.html)).\r\n* In a single node setup, when the server is down, IMHO there is no need to have the timers persistent in a database. No one will execute them. Executing them after the server comes back seems with HarvestingClient and ExportClient as current use cases not very important.\r\n* In a multi node setup, when the timing server is down, you need to change it to another server, so they get executed again. This will result in broken persistent timers anyway, as they had been created with the name of the dead timing server.\r\n\r\nWhen persistance is needed in a multi node setup in the future, there is Hazelcast in Payara which supports storing timers as long as at least one cluster member is online...\r\n\r\nComments are very much appreciated. :-)"},"comment":{"url":"https://api.github.com/repos/IQSS/dataverse/issues/comments/451131543","html_url":"https://github.com/IQSS/dataverse/issues/5345#issuecomment-451131543","issue_url":"https://api.github.com/repos/IQSS/dataverse/issues/5345","id":451131543,"node_id":"MDEyOklzc3VlQ29tbWVudDQ1MTEzMTU0Mw==","user":{"login":"pdurbin","id":21006,"node_id":"MDQ6VXNlcjIxMDA2","avatar_url":"https://avatars2.githubusercontent.com/u/21006?v=4","gravatar_id":"","url":"https://api.github.com/users/pdurbin","html_url":"https://github.com/pdurbin","followers_url":"https://api.github.com/users/pdurbin/followers","following_url":"https://api.github.com/users/pdurbin/following{/other_user}","gists_url":"https://api.github.com/users/pdurbin/gists{/gist_id}","starred_url":"https://api.github.com/users/pdurbin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pdurbin/subscriptions","organizations_url":"https://api.github.com/users/pdurbin/orgs","repos_url":"https://api.github.com/users/pdurbin/repos","events_url":"https://api.github.com/users/pdurbin/events{/privacy}","received_events_url":"https://api.github.com/users/pdurbin/received_events","type":"User","site_admin":false},"created_at":"2019-01-03T12:37:19Z","updated_at":"2019-01-03T12:37:19Z","author_association":"MEMBER","body":"@poikilotherm thanks for merging. You do sound pretty blocked so I moved this issue over to code review so that it comes up naturally at standup. I'm so unfamiliar with EJB timers that the last time I looked at the pull request I was pretty confused. Talking with @landreev (this was before the break) helped clarify a few things. If more or better docs can be added, please go ahead."}}
{"actor":{"display_login":"pdurbin"}}