Advertisement
Kolyaba

Untitled

Dec 8th, 2016
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.54 KB | None | 0 0
  1. diff --git a/lib/Local/TCP/Calc/Server.pm b/lib/Local/TCP/Calc/Server.pm
  2. index ff79376..6dd759d 100644
  3. --- a/lib/Local/TCP/Calc/Server.pm
  4. +++ b/lib/Local/TCP/Calc/Server.pm
  5. @@ -56,6 +56,8 @@ sub INT_HANDLER {
  6. exit(0);
  7. };
  8.  
  9. +$SIG{TERM} = \&INT_HANDLER;
  10. +
  11. sub error_die {
  12.  
  13. };
  14. @@ -96,6 +98,7 @@ sub start_server {
  15. # ---- Starting the worker manager's The Big Loop process
  16. elsif ($worker_manager_pid == 0) {
  17. Local::TCP::Calc::Server::WorkerManager->start($queue, $max_worker, $max_forks_per_task);
  18. + exit(0);
  19. }
  20.  
  21. # --- Something went wrong, we cannot fork
  22. @@ -186,35 +189,14 @@ sub start_server {
  23.  
  24. }
  25. else {
  26. -
  27. - # -- Creating child process which processing some work with error
  28. - $error_pid = fork();
  29. -
  30. - # --- Parent process part
  31. - if ($error_pid) {
  32. - $SIG{CHLD} = \&REAPER;
  33. - close($client);
  34. - next;
  35. - }
  36. -
  37. - # --- Child process part
  38. - elsif (defined $error_pid) {
  39. - sendm($client, TYPE_CONN_ERR, '0');
  40. - close($client);
  41. - exit(0);
  42. - }
  43. -
  44. - # ---Something goes wrong, we cannot fork
  45. - else {
  46. - close($client);
  47. - die "Can't fork: $!";
  48. - }
  49. -
  50. + sendm($client, TYPE_CONN_ERR, '0');
  51. + close($client);
  52. + next;
  53. }
  54. }
  55. }
  56. $socket->close();
  57. - print STDERR "Exit the server. Bye-bye!\n";
  58. + warn "Exit the server. Bye-bye!\n";
  59. kill('INT', $worker_manager_pid)
  60. };
  61.  
  62. diff --git a/lib/Local/TCP/Calc/Server/Queue.pm b/lib/Local/TCP/Calc/Server/Queue.pm
  63. index 13c8066..9e4c432 100644
  64. --- a/lib/Local/TCP/Calc/Server/Queue.pm
  65. +++ b/lib/Local/TCP/Calc/Server/Queue.pm
  66. @@ -30,7 +30,6 @@ sub init {
  67.  
  68. CORE::open($self->{f_handle}, '>>', $self->{queue_filename})
  69. or die "Can't initialize the queue file ".$self->{queue_filename}."\n";
  70. -
  71. $self->{f_handle}->print($self->{init_string});
  72.  
  73. CORE::close($self->{f_handle});
  74. @@ -73,15 +72,12 @@ sub close {
  75. # print STDERR "File $self->{queue_filename} is: \n";
  76. # p %{$file_content};
  77. if ($open_type ne '<') {
  78. - # seek($self->{f_handle}, 0, 0);
  79. - CORE::open(my $fh, ">", $self->{queue_filename}."temp");
  80. -
  81. + seek($self->{f_handle}, 0, 0);
  82. + truncate($self->{f_handle},0);
  83. + my $fh = $self->{f_handle};
  84. $fh->print("$self->{init_string}\n"
  85. ."LAST_ADDED:$self->{last_added_id}\n");
  86. $fh->print("$_:$file_content->{$_}\n") foreach (keys %{$file_content});
  87. -
  88. - CORE::close($fh);
  89. - rename($self->{queue_filename}."temp", $self->{queue_filename});
  90. }
  91. flock($self->{f_handle}, LOCK_UN)
  92. or die "Can't unlock the queue file ".$self->{queue_filename}."\n";
  93. diff --git a/lib/Local/TCP/Calc/Server/Worker.pm b/lib/Local/TCP/Calc/Server/Worker.pm
  94. index 9263eb7..bf45392 100644
  95. --- a/lib/Local/TCP/Calc/Server/Worker.pm
  96. +++ b/lib/Local/TCP/Calc/Server/Worker.pm
  97. @@ -51,7 +51,7 @@ sub write_res {
  98. or die $self->{file_prefix}."result\n";
  99. flock($fh, LOCK_EX)
  100. or die $self->{file_prefix}."result\n";
  101. -
  102. + seek($fh, 0,2);
  103. print $fh "$task == $res\n";
  104.  
  105. flock($fh, LOCK_UN)
  106. diff --git a/lib/Local/TCP/Calc/Server/WorkerManager.pm b/lib/Local/TCP/Calc/Server/WorkerManager.pm
  107. index 69c39ca..a6a13ae 100644
  108. --- a/lib/Local/TCP/Calc/Server/WorkerManager.pm
  109. +++ b/lib/Local/TCP/Calc/Server/WorkerManager.pm
  110. @@ -69,7 +69,6 @@ sub start {
  111.  
  112. # --- Child process part
  113. elsif ($child == 0) {
  114. -
  115. my $worker = Local::TCP::Calc::Server::Worker->new(
  116. cur_task_id => $task_id,
  117. # calc_ref => \&func,
  118. diff --git a/lib/Local/TCP/Calc/SocketSubs.pm b/lib/Local/TCP/Calc/SocketSubs.pm
  119. index 1098dec..7c5d8e7 100644
  120. --- a/lib/Local/TCP/Calc/SocketSubs.pm
  121. +++ b/lib/Local/TCP/Calc/SocketSubs.pm
  122. @@ -81,8 +81,8 @@ sub receive {
  123. my $header_raw;
  124. my $header_ref;
  125. my $message_raw;
  126. -
  127. - if (sysread($socket, $header_raw, $HEADER_BYTES) != $HEADER_BYTES) {
  128. + my $readed = sysread($socket, $header_raw, $HEADER_BYTES);
  129. + if ($! or $readed != $HEADER_BYTES) {
  130. close_connect($socket, {ERROR => "Wrong header length while receiving, close connection...\n"});
  131. return $HEADER_ERROR;
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement