Open gagarski opened 3 years ago
This repo is abandoned. I do recommend switching to SQL based Quartz from Spring. We tried to use this connector in our project but there has been too many problems with actual optimization and speed even on single instance. Switching to SQL version resolved it and allowed for correct multithreading speed.
@WakeCaine ,
why are you so sure that this repo is abandoned ?
@WakeCaine ,
why are you so sure that this repo is abandoned ?
Main maintainer/creator stopped contributions and did not refresh official artifact. Bintray is no longer with us. Additionally there are still persisting problems not only with transactions but also cluster mode. Not saying this didnt have potential but we would need somebody to actually work and improve this and for now SQL version is a lot faster and more stable. I wanted to keep using this but it failed my expectations.
just create a new class
package xxx;
public class FixedMongoDBJobStore extends MongoDBJobStore {
public String getCheckInErrorHandler() {
return NoOpErrorHandler.class.getCanonicalName();
}
}
and pass its name to quartz.properties instead of
#org.quartz.jobStore.class=com.novemberain.quartz.mongodb.MongoDBJobStore
org.quartz.jobStore.class=xxx.FixedMongoDBJobStore
I am trying to update quartz-mongodb in our project. Unfortunately we had to do some monkey-patching around quartz-mongodb code so I took some look into quartz-mongodb code and noticed the following strange things about setting custom checkInErrorHandler:
MongoDBJobStore#initialize
readsquartz-properties
into local variableprops
https://github.com/michaelklishin/quartz-mongodb/blob/91256434fc8ffff15cd60c8541ed3a4bbb59ba4f/src/main/java/com/novemberain/quartz/mongodb/MongoDBJobStore.java#L112props
are passed intoMongoStoreAssembler#build
(and nowhere else) https://github.com/michaelklishin/quartz-mongodb/blob/91256434fc8ffff15cd60c8541ed3a4bbb59ba4f/src/main/java/com/novemberain/quartz/mongodb/MongoDBJobStore.java#L114MongoStoreAssembler#createCheckinExecutor
(and nowhere else) https://github.com/michaelklishin/quartz-mongodb/blob/91256434fc8ffff15cd60c8541ed3a4bbb59ba4f/src/main/java/com/novemberain/quartz/mongodb/MongoStoreAssembler.java#L81Now to the strange things:
createCheckinExecutor
ignores these props and callscreateCheckinTask
(without passing props) https://github.com/michaelklishin/quartz-mongodb/blob/91256434fc8ffff15cd60c8541ed3a4bbb59ba4f/src/main/java/com/novemberain/quartz/mongodb/MongoStoreAssembler.java#L87createCheckinTask
decides which error handler to use based on a value returned byMongoDBJobStore#getCheckInErrorHandler
https://github.com/michaelklishin/quartz-mongodb/blob/91256434fc8ffff15cd60c8541ed3a4bbb59ba4f/src/main/java/com/novemberain/quartz/mongodb/MongoStoreAssembler.java#L95-L100The thing is that
setCheckInErrorHandler
is never called by anyone.So, properties are being read for no reason and
checkInErrorHandler
class is based chosen based on a value which is effectively constant. Seems like something here is missing.