Search in sources :

Example 1 with ServerStatistics

use of org.apache.hadoop.hbase.client.backoff.ServerStatistics in project hbase by apache.

the class TestClientExponentialBackoff method testMaxLoad.

@Test
public void testMaxLoad() {
    Configuration conf = new Configuration(false);
    ExponentialClientBackoffPolicy backoff = new ExponentialClientBackoffPolicy(conf);
    ServerStatistics stats = new ServerStatistics();
    update(stats, 100);
    assertEquals(ExponentialClientBackoffPolicy.DEFAULT_MAX_BACKOFF, backoff.getBackoffTime(server, regionname, stats));
    // another policy with a different max timeout
    long max = 100;
    conf.setLong(ExponentialClientBackoffPolicy.MAX_BACKOFF_KEY, max);
    ExponentialClientBackoffPolicy backoffShortTimeout = new ExponentialClientBackoffPolicy(conf);
    assertEquals(max, backoffShortTimeout.getBackoffTime(server, regionname, stats));
    // test beyond 100 still doesn't exceed the max
    update(stats, 101);
    assertEquals(ExponentialClientBackoffPolicy.DEFAULT_MAX_BACKOFF, backoff.getBackoffTime(server, regionname, stats));
    assertEquals(max, backoffShortTimeout.getBackoffTime(server, regionname, stats));
    // and that when we are below 100, its less than the max timeout
    update(stats, 99);
    assertTrue(backoff.getBackoffTime(server, regionname, stats) < ExponentialClientBackoffPolicy.DEFAULT_MAX_BACKOFF);
    assertTrue(backoffShortTimeout.getBackoffTime(server, regionname, stats) < max);
}
Also used : Configuration(org.apache.hadoop.conf.Configuration) ServerStatistics(org.apache.hadoop.hbase.client.backoff.ServerStatistics) ExponentialClientBackoffPolicy(org.apache.hadoop.hbase.client.backoff.ExponentialClientBackoffPolicy) Test(org.junit.Test)

Example 2 with ServerStatistics

use of org.apache.hadoop.hbase.client.backoff.ServerStatistics in project hbase by apache.

the class TestClientExponentialBackoff method testHeapOccupancyPolicy.

@Test
public void testHeapOccupancyPolicy() {
    Configuration conf = new Configuration(false);
    ExponentialClientBackoffPolicy backoff = new ExponentialClientBackoffPolicy(conf);
    ServerStatistics stats = new ServerStatistics();
    long backoffTime;
    update(stats, 0, 95, 0);
    backoffTime = backoff.getBackoffTime(server, regionname, stats);
    assertTrue("Heap occupancy at low watermark had no effect", backoffTime > 0);
    long previous = backoffTime;
    update(stats, 0, 96, 0);
    backoffTime = backoff.getBackoffTime(server, regionname, stats);
    assertTrue("Increase above low watermark should have increased backoff", backoffTime > previous);
    update(stats, 0, 98, 0);
    backoffTime = backoff.getBackoffTime(server, regionname, stats);
    assertEquals("We should be using max backoff when at high watermark", backoffTime, ExponentialClientBackoffPolicy.DEFAULT_MAX_BACKOFF);
}
Also used : Configuration(org.apache.hadoop.conf.Configuration) ServerStatistics(org.apache.hadoop.hbase.client.backoff.ServerStatistics) ExponentialClientBackoffPolicy(org.apache.hadoop.hbase.client.backoff.ExponentialClientBackoffPolicy) Test(org.junit.Test)

Example 3 with ServerStatistics

use of org.apache.hadoop.hbase.client.backoff.ServerStatistics in project hbase by apache.

the class TestClientExponentialBackoff method testResultOrdering.

/**
   * Make sure that we get results in the order that we expect - backoff for a load of 1 should
   * less than backoff for 10, which should be less than that for 50.
   */
@Test
public void testResultOrdering() {
    Configuration conf = new Configuration(false);
    // make the max timeout really high so we get differentiation between load factors
    conf.setLong(ExponentialClientBackoffPolicy.MAX_BACKOFF_KEY, Integer.MAX_VALUE);
    ExponentialClientBackoffPolicy backoff = new ExponentialClientBackoffPolicy(conf);
    ServerStatistics stats = new ServerStatistics();
    long previous = backoff.getBackoffTime(server, regionname, stats);
    for (int i = 1; i <= 100; i++) {
        update(stats, i);
        long next = backoff.getBackoffTime(server, regionname, stats);
        assertTrue("Previous backoff time" + previous + " >= " + next + ", the next backoff time for " + "load " + i, previous < next);
        previous = next;
    }
}
Also used : Configuration(org.apache.hadoop.conf.Configuration) ServerStatistics(org.apache.hadoop.hbase.client.backoff.ServerStatistics) ExponentialClientBackoffPolicy(org.apache.hadoop.hbase.client.backoff.ExponentialClientBackoffPolicy) Test(org.junit.Test)

Example 4 with ServerStatistics

use of org.apache.hadoop.hbase.client.backoff.ServerStatistics in project hbase by apache.

the class TestClientExponentialBackoff method testNulls.

@Test
public void testNulls() {
    Configuration conf = new Configuration(false);
    ExponentialClientBackoffPolicy backoff = new ExponentialClientBackoffPolicy(conf);
    assertEquals(0, backoff.getBackoffTime(null, null, null));
    // server name doesn't matter to calculation, but check it now anyways
    assertEquals(0, backoff.getBackoffTime(server, null, null));
    assertEquals(0, backoff.getBackoffTime(server, regionname, null));
    // check when no stats for the region yet
    ServerStatistics stats = new ServerStatistics();
    assertEquals(0, backoff.getBackoffTime(server, regionname, stats));
}
Also used : Configuration(org.apache.hadoop.conf.Configuration) ServerStatistics(org.apache.hadoop.hbase.client.backoff.ServerStatistics) ExponentialClientBackoffPolicy(org.apache.hadoop.hbase.client.backoff.ExponentialClientBackoffPolicy) Test(org.junit.Test)

Example 5 with ServerStatistics

use of org.apache.hadoop.hbase.client.backoff.ServerStatistics in project hbase by apache.

the class TestClientExponentialBackoff method testCompactionPressurePolicy.

@Test
public void testCompactionPressurePolicy() {
    Configuration conf = new Configuration(false);
    ExponentialClientBackoffPolicy backoff = new ExponentialClientBackoffPolicy(conf);
    ServerStatistics stats = new ServerStatistics();
    long backoffTime;
    update(stats, 0, 0, 0);
    backoffTime = backoff.getBackoffTime(server, regionname, stats);
    assertTrue("Compaction pressure has no effect", backoffTime == 0);
    long previous = backoffTime;
    update(stats, 0, 0, 50);
    backoffTime = backoff.getBackoffTime(server, regionname, stats);
    assertTrue("Compaction pressure should be bigger", backoffTime > previous);
    update(stats, 0, 0, 100);
    backoffTime = backoff.getBackoffTime(server, regionname, stats);
    assertEquals("under heavy compaction pressure", backoffTime, ExponentialClientBackoffPolicy.DEFAULT_MAX_BACKOFF);
}
Also used : Configuration(org.apache.hadoop.conf.Configuration) ServerStatistics(org.apache.hadoop.hbase.client.backoff.ServerStatistics) ExponentialClientBackoffPolicy(org.apache.hadoop.hbase.client.backoff.ExponentialClientBackoffPolicy) Test(org.junit.Test)

Aggregations

ServerStatistics (org.apache.hadoop.hbase.client.backoff.ServerStatistics)8 Configuration (org.apache.hadoop.conf.Configuration)7 Test (org.junit.Test)7 ExponentialClientBackoffPolicy (org.apache.hadoop.hbase.client.backoff.ExponentialClientBackoffPolicy)6 HRegion (org.apache.hadoop.hbase.regionserver.HRegion)2 HRegionServer (org.apache.hadoop.hbase.regionserver.HRegionServer)2 Region (org.apache.hadoop.hbase.regionserver.Region)2 ArrayList (java.util.ArrayList)1 CountDownLatch (java.util.concurrent.CountDownLatch)1 AtomicLong (java.util.concurrent.atomic.AtomicLong)1 ClientBackoffPolicy (org.apache.hadoop.hbase.client.backoff.ClientBackoffPolicy)1 Batch (org.apache.hadoop.hbase.client.coprocessor.Batch)1 MemstoreSize (org.apache.hadoop.hbase.regionserver.MemstoreSize)1