Changeset 358

Show
Ignore:
Timestamp:
08/21/06 20:08:15 (2 years ago)
Author:
marksmith
Message:

* add generic get_server_setting/set_server_setting methods in Mgd namespace

* add stub-like Checker job (will do fsck stuff) -- so far it populates the fsck table and

works on files there, but doesn't actually do anything with said files yet, so will end
up populating it with every file, but not touching any of them

* add mogilefsd support for spawning Checker job children

* add support through Query child for setting the checker level using server settings

more to come today! (lots more)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/server-newrepl/lib/MogileFS/Config.pm

    r338 r358  
    3434    $reaper_jobs, 
    3535    $monitor_jobs, 
     36    $checker_jobs, 
    3637    $mog_root, 
    3738    $min_free_space, 
     
    117118    $reaper_jobs    = choose_value( 'reaper_jobs', 1 ); 
    118119    $monitor_jobs   = choose_value( 'monitor_jobs', 1 ); 
     120    $checker_jobs   = choose_value( 'checker_jobs', 1 ); 
    119121    $min_free_space = choose_value( 'min_free_space', 100 ); 
    120122    $max_disk_age   = choose_value( 'max_disk_age', 5 ); 
  • branches/server-newrepl/lib/MogileFS/ProcManager.pm

    r353 r358  
    5050    my ($class, $job) = @_; 
    5151    return { 
     52        checker     => "Checker", 
    5253        queryworker => "Query", 
    5354        delete      => "Delete", 
  • branches/server-newrepl/lib/MogileFS/Worker/Query.pm

    r356 r358  
    11131113 
    11141114    return $self->ok_line; 
     1115} 
     1116 
     1117sub cmd_checker { 
     1118    my MogileFS::Worker::Query $self = shift; 
     1119    my $args = shift; 
     1120 
     1121    my $new_setting; 
     1122    if ($args->{disable}) { 
     1123        $new_setting = 'off'; 
     1124    } elsif ($args->{level}) { 
     1125        # they want to turn it on or change the level, so let's ensure they 
     1126        # specified a valid level 
     1127        if (MogileFS::Worker::Checker::is_valid_level($args->{level})) { 
     1128            $new_setting = $args->{level}; 
     1129        } else { 
     1130            return $self->err_line('invalid_checker_level'); 
     1131        } 
     1132    } 
     1133 
     1134    if (defined $new_setting) { 
     1135        Mgd::set_server_setting('fsck_enable', $new_setting); 
     1136        return $self->ok_line; 
     1137    } 
     1138 
     1139    $self->err_line('failure'); 
    11151140} 
    11161141 
     
    11531178        'host_not_found' => "Host not found", 
    11541179        'invalid_chars' => "Patterns must not contain backslashes (\\) or percent signs (%).", 
     1180        'invalid_checker_level' => "Checker level invalid.  Please see documentation on this command.", 
    11551181        'invalid_mindevcount' => "The mindevcount must be at least 1", 
    11561182        'key_exists' => "Target key name already exists; can't overwrite.", 
  • branches/server-newrepl/mogilefsd

    r338 r358  
    4545use MogileFS::Worker::Reaper; 
    4646use MogileFS::Worker::Monitor; 
     47use MogileFS::Worker::Checker; 
    4748use MogileFS::ProcManager; 
    4849use MogileFS::Config; 
     
    7576MogileFS::ProcManager->set_min_workers('reaper'      => MogileFS->config('reaper_jobs')); 
    7677MogileFS::ProcManager->set_min_workers('monitor'     => MogileFS->config('monitor_jobs')); 
     78MogileFS::ProcManager->set_min_workers('checker'     => MogileFS->config('checker_jobs')); 
    7779 
    7880# open up our log 
     
    924926    } 
    925927 
    926     my $sversion = $dbh->selectrow_array("SELECT value FROM server_settings WHERE field='schema_version'") || 0; 
     928    my $sversion = get_server_setting('schema_version') || 0; 
    927929    unless ($sversion == SCHEMA_VERSION) { 
    928930        my $exp = SCHEMA_VERSION; 
     
    930932            "Please run mogdbsetup to upgrade your schema.\n"; 
    931933    } 
     934} 
     935 
     936# set_server_setting( key, value ) 
     937#   set value to undef to remove whatever is presently stored; returns 1 on success or 
     938#   undef on error 
     939sub set_server_setting { 
     940    my ($key, $val) = @_; 
     941    return unless $key; 
     942 
     943    my $dbh = Mgd::get_dbh() 
     944        or return undef; 
     945 
     946    if (defined $val) { 
     947        $dbh->do("REPLACE INTO server_settings (field, value) VALUES (?, ?)", undef, $key, $val); 
     948    } else { 
     949        $dbh->do("DELETE FROM server_settings WHERE field=?", undef, $key); 
     950    } 
     951 
     952    return undef if $dbh->err; 
     953    return 1; 
     954} 
     955 
     956# get_server_setting( key ) 
     957#   get value of server setting, undef on error (or no result) 
     958sub get_server_setting { 
     959    my $dbh = Mgd::get_dbh() 
     960        or return undef; 
     961    my $ret = $dbh->selectrow_array("SELECT value FROM server_settings WHERE field=?", undef, shift); 
     962    return undef if $dbh->err; 
     963    return $ret; 
    932964} 
    933965