quartz-mongodb icon indicating copy to clipboard operation
quartz-mongodb copied to clipboard

quartz-mongodb 2.2.0-rc2: checkInErrorHandler — something is missing

Open gagarski opened this issue 4 years ago • 4 comments

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 reads quartz-properties into local variable props https://github.com/michaelklishin/quartz-mongodb/blob/91256434fc8ffff15cd60c8541ed3a4bbb59ba4f/src/main/java/com/novemberain/quartz/mongodb/MongoDBJobStore.java#L112
  • These props are passed into MongoStoreAssembler#build (and nowhere else) https://github.com/michaelklishin/quartz-mongodb/blob/91256434fc8ffff15cd60c8541ed3a4bbb59ba4f/src/main/java/com/novemberain/quartz/mongodb/MongoDBJobStore.java#L114
  • Then these props are passed into MongoStoreAssembler#createCheckinExecutor (and nowhere else) https://github.com/michaelklishin/quartz-mongodb/blob/91256434fc8ffff15cd60c8541ed3a4bbb59ba4f/src/main/java/com/novemberain/quartz/mongodb/MongoStoreAssembler.java#L81

Now to the strange things:

  • createCheckinExecutor ignores these props and calls createCheckinTask (without passing props) https://github.com/michaelklishin/quartz-mongodb/blob/91256434fc8ffff15cd60c8541ed3a4bbb59ba4f/src/main/java/com/novemberain/quartz/mongodb/MongoStoreAssembler.java#L87
  • createCheckinTask decides which error handler to use based on a value returned by MongoDBJobStore#getCheckInErrorHandler https://github.com/michaelklishin/quartz-mongodb/blob/91256434fc8ffff15cd60c8541ed3a4bbb59ba4f/src/main/java/com/novemberain/quartz/mongodb/MongoStoreAssembler.java#L95-L100

The 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.

gagarski avatar Sep 06 '21 18:09 gagarski

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 avatar Oct 29 '21 12:10 WakeCaine

@WakeCaine ,

why are you so sure that this repo is abandoned ?

rfelgent avatar Dec 16 '21 11:12 rfelgent

@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.

wakymak avatar Jan 05 '22 08:01 wakymak