I'm currently trying to get my rundeck to be HA. What I'm doing is spawning several independent RD instances, and add them into a F5 VIP.
I've managed to configure a MySQL and WebDav back-end and both of them are working.
The thing is that, the webdav plugin complains about OPTIMISTIC LOCKING. Here's the exception I have:
==> /var/log/rundeck/rundeck.log <==
2015-06-15 10:17:16,107 [quartzScheduler_Worker-1] ERROR grails.app.jobs.rundeck.quartzjobs.ExecutionJob - Execution 29 update job stats (87): caught exception: Object of class [rundeck.LogFileStorageRequest] with identifier [12]: optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) : [rundeck.LogFileStorageRequest#12]
org.springframework.orm.hibernate4.HibernateOptimisticLockingFailureException: Object of class [rundeck.LogFileStorageRequest] with identifier [12]: optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) : [rundeck.LogFileStorageRequest#12]
at rundeck.quartzjobs.ExecutionJob$_saveState_closure4.doCall(ExecutionJob.groovy:472)
at rundeck.quartzjobs.ExecutionJob.withRetry(ExecutionJob.groovy:392)
at rundeck.quartzjobs.ExecutionJob.saveState(ExecutionJob.groovy:471)
at rundeck.quartzjobs.ExecutionJob.execute_internal(ExecutionJob.groovy:143)
at rundeck.quartzjobs.ExecutionJob$_execute_closure1.doCall(ExecutionJob.groovy:71)
at com.codahale.metrics.Timer.time(Timer.java:99)
at rundeck.quartzjobs.ExecutionJob.execute(ExecutionJob.groovy:70)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) : [rundeck.LogFileStorageRequest#12]
The new log for my execution is in fact in my webdav server, but I would like to understand little bit about this exception. Can I get rid of it?