[dw-free] Investigate LJ::Knob, remove?
[commit: http://hg.dwscoalition.org/dw-free/rev/a46c62533652]
http://bugs.dwscoalition.org/show_bug.cgi?id=1549
Remove unused LJ::Knob code.
Patch by
denise.
Files modified:
http://bugs.dwscoalition.org/show_bug.cgi?id=1549
Remove unused LJ::Knob code.
Patch by
![[staff profile]](https://www.dreamwidth.org/img/silk/identity/user_staff.png)
Files modified:
- bin/upgrading/base-data.sql
- bin/upgrading/update-db-general.pl
- cgi-bin/LJ/Knob.pm
- cgi-bin/ljlib.pl
- t/knob.t
-------------------------------------------------------------------------------- diff -r d0a7db53ccb1 -r a46c62533652 bin/upgrading/base-data.sql --- a/bin/upgrading/base-data.sql Fri Aug 21 03:24:20 2009 +0000 +++ b/bin/upgrading/base-data.sql Fri Aug 21 00:43:19 2009 -0500 @@ -877,7 +877,6 @@ REPLACE INTO schematables (des, public_b REPLACE INTO schematables (des, public_browsable, redist_mode, redist_where, tablename) VALUES ('Global. Stores content marked as spam by users when they delete it, for administrator review.\n\r\nA reported comment, user-to-user message, or community entry is copied into this table, by the LJ::mark_comment_as_spam, LJ::mark_as_spam, or LJ::mark_entry_as_spam function, respectively.\r\n\r\nThe admin tool (/admin/spamreports.bml hinging on siteadmin:spamreports priv) allows spam report viewing: top 10 reported IPs, top 10 reported users (and showing if someone has received a spam warning before), last 10 reports, reports in last 1 hour, 6 hours, and 24 hours; the page supports sorting by open/closed.\r\n\r\nThe \'spamreport_notification\' hook exists for optionally notifying people about spamming. A maintenance task cleans out data older than 90 days. Please see also the [dbtable[tempanonips]] table.', '0', 'off', NULL, 'spamreports'); REPLACE INTO schematables (des, public_browsable, redist_mode, redist_where, tablename) VALUES ('Global. Stores contextual product prodding items. (\"Hey, you\'ve never used polls, wanna learn how?\")', '0', 'off', NULL, 'cprodlist'); REPLACE INTO schematables (des, public_browsable, redist_mode, redist_where, tablename) VALUES ('Global. Stores counter information allocated by the LJ::alloc_global_counter function. Please see also [dbtable[usercounter]].', '0', 'off', NULL, 'counter'); -REPLACE INTO schematables (des, public_browsable, redist_mode, redist_where, tablename) VALUES ('Global. Stores data for LJ::Knob, a class to efficiently support web/config-based tunables.', '0', 'off', NULL, 'knob'); REPLACE INTO schematables (des, public_browsable, redist_mode, redist_where, tablename) VALUES ('Global. Stores data for RFC 2617 challenge-response digest authentication support - used on-site for logins, commenting, etc. Please see also [dbtable[secrets]].', '0', 'off', NULL, 'challenges'); REPLACE INTO schematables (des, public_browsable, redist_mode, redist_where, tablename) VALUES ('Global. Stores data for SiteMessages widget (used to post announcements to users).', '0', 'off', NULL, 'site_messages'); REPLACE INTO schematables (des, public_browsable, redist_mode, redist_where, tablename) VALUES ('Global. Stores data for a rotating secret value on the server, for auth support. Please see also [dbtable[challenges]].', '0', 'off', NULL, 'secrets'); diff -r d0a7db53ccb1 -r a46c62533652 bin/upgrading/update-db-general.pl --- a/bin/upgrading/update-db-general.pl Fri Aug 21 03:24:20 2009 +0000 +++ b/bin/upgrading/update-db-general.pl Fri Aug 21 00:43:19 2009 -0500 @@ -1007,6 +1007,7 @@ register_tabledrop("sms_msgerror"); register_tabledrop("sms_msgerror"); register_tabledrop("sms_msgprop"); register_tabledrop("sms_msgproplist"); +register_tabledrop("knob"); register_tablecreate("portal", <<'EOC'); CREATE TABLE portal ( @@ -2566,13 +2567,6 @@ CREATE TABLE usersearch_packdata ( ) EOC -register_tablecreate("knob", <<'EOC'); -CREATE TABLE knob ( - knobname VARCHAR(255) NOT NULL PRIMARY KEY, - val TINYINT UNSIGNED -) -EOC - register_tablecreate("debug_notifymethod", <<'EOC'); CREATE TABLE debug_notifymethod ( userid int unsigned not null, diff -r d0a7db53ccb1 -r a46c62533652 cgi-bin/LJ/Knob.pm --- a/cgi-bin/LJ/Knob.pm Fri Aug 21 03:24:20 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,69 +0,0 @@ -package LJ::Knob; -use strict; -use String::CRC32 (); - -my %singleton; - -# fields: -# name -# value -- if defined, loaded. value in range [0,100] (inclusive) - -sub instance { - my ($class, $knobname) = @_; - return $singleton{$knobname} ||= LJ::Knob->new($knobname); -} - -sub new { - my ($class, $knobname) = @_; - my $self = { - name => $knobname, - }; - return bless $self, $class; -} - -sub memkey { - my $self = shift; - return "knob:$self->{name}"; -} - -sub set_value { - my ($self, $val) = @_; - $val += 0; - - my $memkey = $self->memkey; - LJ::MemCache::set($memkey, $val); - my $dbh = LJ::get_db_writer(); - $dbh->do("REPLACE INTO knob (knobname, val) VALUES (?, ?)", undef, - $self->{name}, $val); - - # broadcast to other apache nodes to change - $self->{value} = $val; - - return 1; -} - -sub value { - my $self = shift; - return $self->{value} if defined $self->{value}; - my $name = $self->{name}; - - my $memkey = $self->memkey; - my $rv = LJ::MemCache::get($memkey); - if (defined $rv) { - return $self->{value} = $rv; - } - - my $dbh = LJ::get_db_writer(); - $rv = $dbh->selectrow_array("SELECT val FROM knob WHERE knobname=?", undef, $name) + 0; - LJ::MemCache::add($memkey, $rv); - return $self->{value} = $rv; -} - -sub check { - my ($self, $checkon) = @_; - my $rand = (127 & int(String::CRC32::crc32($checkon))); # [0 .. 127] - my $val = int(127 * $self->value / 100); # [0 .. 127] - return $rand <= $val; -} - -1; diff -r d0a7db53ccb1 -r a46c62533652 cgi-bin/ljlib.pl --- a/cgi-bin/ljlib.pl Fri Aug 21 03:24:20 2009 +0000 +++ b/cgi-bin/ljlib.pl Fri Aug 21 00:43:19 2009 -0500 @@ -38,7 +38,6 @@ use Class::Autouse qw( TheSchwartz::Job LJ::Comment LJ::Config - LJ::Knob LJ::ExternalSite LJ::ExternalSite::Vox LJ::Message diff -r d0a7db53ccb1 -r a46c62533652 t/knob.t --- a/t/knob.t Fri Aug 21 03:24:20 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -# -*-perl-*- - -use strict; -use Test::More 'no_plan'; -use lib "$ENV{LJHOME}/cgi-bin"; -require 'ljlib.pl'; - -my $k; - -$k = LJ::Knob->instance("test_knob"); -ok($k); - -$k->set_value(50); -is($k->value, 50, "knob value is 50"); - -my ($match, $nomatch); -for (1..500) { - if ($k->check($_)) { - $match++; - die "inconsistent" unless $k->check($_); - } else { - $nomatch++; - die "inconsistent" if $k->check($_); - } -} -is($match, 269, "269 matched"); -is($nomatch, 231, "231 didn't match"); --------------------------------------------------------------------------------