Merge lp:~percona-toolkit-dev/percona-toolkit/merge-pt-agent-2 into lp:~percona-toolkit-dev/percona-toolkit/release-2.2.6

Proposed by Daniel Nichter
Status: Merged
Approved by: Daniel Nichter
Approved revision: 593
Merged at revision: 593
Proposed branch: lp:~percona-toolkit-dev/percona-toolkit/merge-pt-agent-2
Merge into: lp:~percona-toolkit-dev/percona-toolkit/release-2.2.6
Diff against target: 66 lines (+22/-23)
1 file modified
bin/pt-agent (+22/-23)
To merge this branch: bzr merge lp:~percona-toolkit-dev/percona-toolkit/merge-pt-agent-2
Reviewer Review Type Date Requested Status
Daniel Nichter Approve
Review via email: mp+194435@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Daniel Nichter (daniel-nichter) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'bin/pt-agent'
2--- bin/pt-agent 2013-11-08 01:47:46 +0000
3+++ bin/pt-agent 2013-11-08 02:23:59 +0000
4@@ -7366,15 +7366,7 @@
5 # if 1) the service spools data and 2) there is data.
6 my $file_size = (-s $tmp_data_file) || 0;
7 $logger->debug("$tmp_data_file size: " . ($file_size || 0) . " bytes");
8- if ( $file_size > $max_data ) {
9- $logger->error("Data file is larger than $max_data, the service "
10- . "may be malfunctioning, stopping service");
11- stop_service(
12- service => $service->name,
13- lib_dir => $lib_dir,
14- );
15- }
16- elsif ( $use_spool && $file_size ) {
17+ if ( $use_spool && $file_size ) {
18 # Save metadata about this sample _first_, because --send-data looks
19 # for the data file first, then for a corresponding .meta file. If
20 # we write the data file first, then we create a race condition: while
21@@ -7391,24 +7383,31 @@
22 );
23 $metadata->{run_time} = sprintf('%.6f', time - $start_time);
24 (my $meta_file = $data_file) =~ s/\.data/\.meta/;
25+ my $json_metadata = as_json($metadata, json => $json);
26 write_to_file(
27- data => as_json($metadata, json => $json),
28+ data => $json_metadata,
29 file => "$data_dir/$meta_file",
30 );
31
32- # Use system mv instead of Perl File::Copy::move() because it's
33- # unknown if the Perl version will do an optimized move, i.e.
34- # simply move the inode, _not_ copy the file. A system mv on
35- # the same filesystem is pretty much guaranteed to do an optimized,
36- # i.e. quasi-atomic, move.
37- my $cmd = "mv $tmp_data_file $data_dir";
38- $logger->debug($cmd);
39- system($cmd);
40- my $cmd_exit_status = $CHILD_ERROR >> 8;
41- if ( $cmd_exit_status != 0 ) {
42- $logger->error("Move failed: $cmd")
43- }
44- $exit_status |= $cmd_exit_status;
45+ if ( $file_size <= $max_data ) {
46+ # Use system mv instead of Perl File::Copy::move() because it's
47+ # unknown if the Perl version will do an optimized move, i.e.
48+ # simply move the inode, _not_ copy the file. A system mv on
49+ # the same filesystem is pretty much guaranteed to do an optimized,
50+ # i.e. quasi-atomic, move.
51+ my $cmd = "mv $tmp_data_file $data_dir";
52+ $logger->debug($cmd);
53+ system($cmd);
54+ my $cmd_exit_status = $CHILD_ERROR >> 8;
55+ if ( $cmd_exit_status != 0 ) {
56+ $logger->error("Move failed: $cmd")
57+ }
58+ $exit_status |= $cmd_exit_status;
59+ }
60+ else {
61+ $logger->error("Data file is larger than $max_data, skipping: "
62+ . ($json_metadata || ''));
63+ }
64 }
65
66 # Remove staged files. Anything to save should have been moved

Subscribers

People subscribed via source and target branches

to all changes: