resque-pool icon indicating copy to clipboard operation
resque-pool copied to clipboard

release 1.0.0 and follow semver

Open nevans opened this issue 10 years ago • 10 comments

Although we claim semver, we still don't have a version 1.0.0 (which is required for semver). :)

If everything goes well with the RC I pushed last night, I'll make that 0.5.0 next Tuesday. I've held off on v1.0.0 because of the many warts, but since I've been using this in production (as-is) for several years, I think those warts aren't enough to prohibit a first release.

What will hold off a public release is if there is if there are any backwards compatible changes that "need" to be made. I'd rather make them now than make a 1.0 release that is only supported for a couple of weeks/months (or backport bugfixes).

If there are no backwards-incompatible changes to be made, I'll just rename 0.5.0 as 1.0.0 a week or so after 0.5.0 is released.

nevans avatar Jan 28 '15 16:01 nevans

In particular, I'd like to analyze the most significant or longest lived forks and see if there's anything we need to merge from them that might impact backwards compatibility. If so, let's merge them before 1.0.0. If not, we can merge them for 1.1 or 1.2.

After a quick perusal of the fork-network (most of which have been inactive for over a year), these seem to be the most significant branches that haven't sent in pull requests (and some that have):

  • [ ] https://github.com/backupify/resque-pool/compare/nevans:master...master
    • mostly @haruska, also @nirvdrum, @ericalexander, @bpovlich, @james-lawrence
  • [ ] https://github.com/ShippingEasy/resque-pool/compare/nevans:master...deploy @joshuaflanagan and @brasic
  • [ ] https://github.com/PeopleAdmin/resque-pool/compare/nevans:master...deploy (and other branches)
    • @joshuaflanagan, @lwoodson, @mattdbridges
  • [ ] https://github.com/jonleighton/resque-pool/compare/nevans:master...hooks @jonleighton
  • [ ] https://github.com/mcwiklinski/resque-pool/compare/nevans:master...master @mcwiklinski
  • [ ] https://github.com/AF83/resque-pool/compare/nevans:master...af83 @spk and @nono
  • [ ] https://github.com/optimis/resque-pool/compare/nevans:master...drb @uchouhan
  • [ ] https://github.com/optimis/resque-pool/compare/nevans:master...v3 @uchouhan
  • [ ] https://github.com/maxdunn210/resque-pool/compare/nevans:master...master @maxdunn210
  • [ ] https://github.com/ono/resque-pool/compare/nevans:master...master @ono
  • [ ] What other significant forks are we missing?

This is not a commitment to merge in every single change they've made (we might want to make their changes easy to do as plugins or configuration rather than core part of resque-pool). It's a commitment to research them for backwards incompatibility, and plan the shortest course to semver 1.0.0 (that won't require us to release 2.0.0 in order to support what these forks are doing).

nevans avatar Jan 29 '15 15:01 nevans

I'm unsure if backupify is still using resque-pool. That said, those changes to ensure you don't 2x your worker count on restart are probably still valuable to those using resque.

haruska avatar Jan 29 '15 15:01 haruska

Thanks for the heads-up. We wanted to monitor memory usage of each worker processes with monit. Monit requires pid file and my patch gives the sequential name like resuque-pool.worker.1.pid, resuque-pool.worker.2.pid... to pid files. It also considers when a worker process gets killed and resque-pool spawn a process again. In that case, it has to rewrite the existing pid file instead of creating a new one.

The reasons I didn't send PR were:

  1. implementation is hacky
  2. the use case is limited so I supposed that you didn't want to maintain

Besides we are also sunsetting a sub-system which is currently using it. So please don't worry about my fork.

ono avatar Feb 03 '15 22:02 ono

The significant work in the PeopleAdmin/ShippingEasy forks has already been submitted as a PR: https://github.com/nevans/resque-pool/pull/85

I still think that PR has widespread value and should be pulled in. We are still actively using our forks.

On Tue, Feb 3, 2015 at 4:48 PM, Tatsuya Ono [email protected] wrote:

Thanks for the heads-up. We wanted to monitor memory usage of each worker processes with monit. Monit requires pid file and my patch gives the sequential name like resuque-pool.worker.1.pid, resuque-pool.worker.2.pid... to pid files. It also considers when a worker process gets killed and resque-pool spawn a process again. In that case, it has to rewrite the existing pid file instead of creating a new one.

The reason I didn't send PR was:

  1. implementation is hacky
  2. the use case is limited so I supposed that you didn't want to maintain

Besides we are also sunsetting a sub-system which is currently using it. So please don't worry about my fork.

— Reply to this email directly or view it on GitHub https://github.com/nevans/resque-pool/issues/120#issuecomment-72752839.

joshuaflanagan avatar Feb 03 '15 23:02 joshuaflanagan

The most important of these branches (custom config loader) was merged and released in 0.6.0.rc1. Please help test it (and the other changes) out, if you can.

nevans avatar Oct 05 '15 18:10 nevans

I'll try to get this release deployed soon, to test. For what its worth, the custom config loader code has been running in production at 2 different companies for over a year. One company uses the custom config loader feature, and the other relies on the default yml file config, and both scenarios have been running fine with that code.

joshuaflanagan avatar Oct 06 '15 15:10 joshuaflanagan

Sorry for being nosy, but how that custom config loader would benefit the mass?

phuongnd08 avatar Oct 10 '15 03:10 phuongnd08

@phuongnd08 A lot of teams are constrained by the static yaml configuration. See https://github.com/nevans/resque-pool/pull/69, https://github.com/nevans/resque-pool/pull/62, and https://github.com/nevans/resque-pool/pull/99 as some examples of people trying to work around the static config. The custom config loader offers an extension point to solve all of those problems, without requiring resque-pool to take on code specific to those solutions.

joshuaflanagan avatar Oct 10 '15 03:10 joshuaflanagan

Thank you. Perhaps I could use this to tackle #136

phuongnd08 avatar Oct 10 '15 03:10 phuongnd08

Just to clear thing up: If number of worker assigned to a queue is currently 1, on a configuration reload I set it to 0, would it terminate the current executing task or would it wait until the task completed?

phuongnd08 avatar Oct 10 '15 04:10 phuongnd08