components/memcached/patches/02-lru-maintainer.patch
author Rich Burridge <rich.burridge@oracle.com>
Mon, 19 Dec 2016 15:44:03 -0800
branchs11u3-sru
changeset 7510 9eeac2fae18e
permissions -rw-r--r--
25142497 Updated memcached to version 1.4.33 25139575 problem in DATABASE/MEMCACHED
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7510
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     1
Ignore lru-maintainer.t because it is inconsistent.
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     2
Upstream is irresponsible https://groups.google.com/forum/#!topic/memcached/35wG9noM9rM
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     3
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     4
--- memcached-1.4.33/t/lru-maintainer.t.orig	2016-11-23 08:09:00.238033621 +0000
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     5
+++ memcached-1.4.33/t/lru-maintainer.t	1969-12-31 16:00:00.000000000 +0000
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     6
@@ -1,105 +0,0 @@
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     7
-#!/usr/bin/perl
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     8
-
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     9
-use strict;
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    10
-use warnings;
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    11
-use Test::More tests => 225;
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    12
-use FindBin qw($Bin);
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    13
-use lib "$Bin/lib";
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    14
-use MemcachedTest;
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    15
-
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    16
-# Regression test for underestimating the size of items after the large memory
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    17
-# change.
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    18
-my $server = new_memcached('-m 3 -o lru_maintainer,lru_crawler');
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    19
-my $sock = $server->sock;
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    20
-my $keystub = "X"x200;
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    21
-for (1 .. 15000) {
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    22
-    print $sock "set $keystub$_ 0 0 2 noreply\r\nok\r\n";
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    23
-}
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    24
-# There's probably already an error on the wire, so we'll see that.
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    25
-$keystub .= "20001";
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    26
-print $sock "set $keystub 0 0 2\r\nok\r\n";
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    27
-is(scalar <$sock>, "STORED\r\n", "stored key without OOM");
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    28
-
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    29
-# Basic tests
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    30
-$server = new_memcached('-m 6 -o lru_maintainer,lru_crawler');
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    31
-$sock = $server->sock;
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    32
-
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    33
-for (1 .. 10) {
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    34
-    print $sock "set ifoo$_ 0 1 2\r\nok\r\n";
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    35
-    is(scalar <$sock>, "STORED\r\n", "stored key");
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    36
-}
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    37
-
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    38
-sleep 3;
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    39
-
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    40
-{
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    41
-    my $stats = mem_stats($sock);
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    42
-    is($stats->{reclaimed}, 10, "expired key automatically reclaimed");
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    43
-}
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    44
-
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    45
-my $value = "B"x66560;
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    46
-
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    47
-print $sock "set canary 0 0 66560\r\n$value\r\n";
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    48
-is(scalar <$sock>, "STORED\r\n", "stored canary key");
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    49
-
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    50
-# Now flush the slab class with junk.
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    51
-for (my $key = 0; $key < 100; $key++) {
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    52
-    if ($key == 30) {
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    53
-        my $stats;
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    54
-        for (0..2) {
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    55
-            # Give the juggler some time to move. some platforms suffer at
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    56
-            # this more than others (solaris amd64?)
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    57
-            $stats = mem_stats($sock, "items");
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    58
-            if ($stats->{"items:31:moves_to_cold"} == 0) { sleep 1; next; }
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    59
-            last;
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    60
-        }
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    61
-        isnt($stats->{"items:31:moves_to_cold"}, 0, "moved some items to cold");
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    62
-        # Fetch the canary once, so it's now marked as active.
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    63
-        mem_get_is($sock, "canary", $value);
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    64
-    }
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    65
-    print $sock "set key$key 0 0 66560\r\n$value\r\n";
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    66
-    is(scalar <$sock>, "STORED\r\n", "stored key$key");
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    67
-}
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    68
-
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    69
-{
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    70
-    my $stats = mem_stats($sock);
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    71
-    isnt($stats->{evictions}, 0, "some evictions happened");
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    72
-    my $istats = mem_stats($sock, "items");
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    73
-    isnt($stats->{"items:31:number_warm"}, 0, "our canary moved to warm");
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    74
-}
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    75
-
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    76
-# Key should've been saved to the WARM_LRU, and still exists.
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    77
-mem_get_is($sock, "canary", $value);
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    78
-
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    79
-# Test NOEXP_LRU
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    80
-$server = new_memcached('-m 2 -o lru_maintainer,lru_crawler,expirezero_does_not_evict');
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    81
-$sock = $server->sock;
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    82
-
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    83
-{
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    84
-    my $stats = mem_stats($sock, "settings");
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    85
-    is($stats->{expirezero_does_not_evict}, "yes");
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    86
-}
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    87
-
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    88
-print $sock "set canary 0 0 66560\r\n$value\r\n";
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    89
-is(scalar <$sock>, "STORED\r\n", "stored noexpire canary key");
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    90
-
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    91
-{
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    92
-    my $stats = mem_stats($sock, "items");
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    93
-    is($stats->{"items:31:number_noexp"}, 1, "one item in noexpire LRU");
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    94
-    is($stats->{"items:31:number_hot"}, 0, "item did not go into hot LRU");
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    95
-}
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    96
-
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    97
-# *Not* fetching the key, and flushing the slab class with junk.
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    98
-# Using keys with actual TTL's here.
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    99
-for (my $key = 0; $key < 100; $key++) {
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   100
-    print $sock "set key$key 0 3600 66560\r\n$value\r\n";
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   101
-    is(scalar <$sock>, "STORED\r\n", "stored key$key");
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   102
-}
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   103
-
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   104
-{
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   105
-    my $stats = mem_stats($sock, "items");
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   106
-    isnt($stats->{evictions}, 0, "some evictions happened");
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   107
-    isnt($stats->{number_hot}, 0, "nonzero exptime items went into hot LRU");
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   108
-}
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   109
-# Canary should still exist, even unfetched, because it's protected by
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   110
-# noexpire.
9eeac2fae18e 25142497 Updated memcached to version 1.4.33
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   111
-mem_get_is($sock, "canary", $value);