@@ -1,3 +1,10 @@
+1.12 2014-12-14
+
+ * Add HACKING file
+
+ * Fix memory leak when clients disconnect (sleeper list isn't pruned).
+ Fixes CPAN RT 70728 (Marsh Yamazaki)
+
1.11 2010-01-17
* Don't get stuck in the wakeup loop. Dummy.
@@ -0,0 +1,3 @@
+http://contributing.appspot.com/gearman
+
+Please submit patches to the mailing list
@@ -8,3 +8,5 @@ Makefile.PL
MANIFEST This list of files
MANIFEST.SKIP
META.yml Module meta-data (added by MakeMaker)
+HACKING
+META.json Module JSON meta-data (added by MakeMaker)
@@ -3,6 +3,7 @@
\bCVS\b
,v$
\B\.svn\b
+\.git
# Avoid Makemaker generated and utility files.
\bMANIFEST\.bak
@@ -0,0 +1,42 @@
+{
+ "abstract" : "function call \"router\" and load balancer",
+ "author" : [
+ "Brad Fitzpatrick (brad@danga.com), Brad Whitaker (whitaker@danga.com)"
+ ],
+ "dynamic_config" : 1,
+ "generated_by" : "ExtUtils::MakeMaker version 6.76, CPAN::Meta::Converter version 2.132510",
+ "license" : [
+ "unknown"
+ ],
+ "meta-spec" : {
+ "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
+ "version" : "2"
+ },
+ "name" : "Gearman-Server",
+ "no_index" : {
+ "directory" : [
+ "t",
+ "inc"
+ ]
+ },
+ "prereqs" : {
+ "build" : {
+ "requires" : {
+ "ExtUtils::MakeMaker" : "0"
+ }
+ },
+ "configure" : {
+ "requires" : {
+ "ExtUtils::MakeMaker" : "0"
+ }
+ },
+ "runtime" : {
+ "requires" : {
+ "Danga::Socket" : "1.52",
+ "Gearman::Util" : "0"
+ }
+ }
+ },
+ "release_status" : "stable",
+ "version" : "1.12"
+}
@@ -1,12 +1,23 @@
-# http://module-build.sourceforge.net/META-spec.html
-#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#
-name: Gearman-Server
-version: 1.11
-version_from: lib/Gearman/Server.pm
-installdirs: site
+---
+abstract: "function call \"router\" and load balancer"
+author:
+ - 'Brad Fitzpatrick (brad@danga.com), Brad Whitaker (whitaker@danga.com)'
+build_requires:
+ ExtUtils::MakeMaker: 0
+configure_requires:
+ ExtUtils::MakeMaker: 0
+dynamic_config: 1
+generated_by: 'ExtUtils::MakeMaker version 6.76, CPAN::Meta::Converter version 2.132510'
+license: unknown
+meta-spec:
+ url: http://module-build.sourceforge.net/META-spec-v1.4.html
+ version: 1.4
+name: Gearman-Server
+no_index:
+ directory:
+ - t
+ - inc
requires:
- Danga::Socket: 1.52
- Gearman::Util: 0
-
-distribution_type: module
-generated_by: ExtUtils::MakeMaker version 6.30
+ Danga::Socket: 1.52
+ Gearman::Util: 0
+version: 1.12
@@ -92,9 +92,22 @@ sub close {
# Remove self from sleepers, otherwise it will be leaked if another worker
# for the job never connects.
my $sleepers = $self->{server}{sleepers};
+ my $sleepers_list = $self->{server}{sleepers_list};
for my $job (@{ $self->{can_do_list} }) {
my $sleeping = $sleepers->{$job};
delete $sleeping->{$self};
+
+ my $new_sleepers_list;
+ for my $client (@{$sleepers_list->{$job}}) {
+ next unless $client;
+ push @{$new_sleepers_list}, $client unless $sleeping->{$client};
+ }
+ if ($new_sleepers_list) {
+ $self->{server}{sleepers_list}->{$job} = $new_sleepers_list;
+ } else {
+ delete $self->{server}{sleepers_list}->{$job};
+ }
+
delete $sleepers->{$job} unless %$sleeping;
}
@@ -48,7 +48,7 @@ use fields (
'wakeup_timers', # func -> timer, timer to be canceled or adjusted when job grab/inject is called
);
-our $VERSION = "1.11";
+our $VERSION = "1.12";
=head1 METHODS