View Javadoc

1   /*
2    *
3    * Licensed to the Apache Software Foundation (ASF) under one
4    * or more contributor license agreements.  See the NOTICE file
5    * distributed with this work for additional information
6    * regarding copyright ownership.  The ASF licenses this file
7    * to you under the Apache License, Version 2.0 (the
8    * "License"); you may not use this file except in compliance
9    * with the License.  You may obtain a copy of the License at
10   *
11   *     http://www.apache.org/licenses/LICENSE-2.0
12   *
13   * Unless required by applicable law or agreed to in writing, software
14   * distributed under the License is distributed on an "AS IS" BASIS,
15   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16   * See the License for the specific language governing permissions and
17   * limitations under the License.
18   */
19  
20  package org.apache.hadoop.hbase.namequeues;
21  
22  import org.apache.hadoop.hbase.ScheduledChore;
23  import org.apache.hadoop.hbase.Stoppable;
24  import org.apache.hadoop.hbase.classification.InterfaceAudience;
25  import org.slf4j.Logger;
26  import org.slf4j.LoggerFactory;
27  
28  /**
29   * Chore to insert multiple accumulated slow/large logs to hbase:slowlog system table
30   */
31  @InterfaceAudience.Private
32  public class SlowLogTableOpsChore extends ScheduledChore {
33  
34    private static final Logger LOG = LoggerFactory.getLogger(SlowLogTableOpsChore.class);
35  
36    private final NamedQueueRecorder namedQueueRecorder;
37  
38    /**
39     * Chore Constructor
40     *
41     * @param stopper The stopper - When {@link Stoppable#isStopped()} is true, this chore will
42     *   cancel and cleanup
43     * @param period Period in millis with which this Chore repeats execution when scheduled
44     * @param namedQueueRecorder {@link NamedQueueRecorder} instance
45     */
46    public SlowLogTableOpsChore(final Stoppable stopper, final int period,
47        final NamedQueueRecorder namedQueueRecorder) {
48      super("SlowLogTableOpsChore", stopper, period);
49      this.namedQueueRecorder = namedQueueRecorder;
50    }
51  
52    @Override
53    protected void chore() {
54      if (LOG.isTraceEnabled()) {
55        LOG.trace("SlowLog Table Ops Chore is starting up.");
56      }
57      namedQueueRecorder.persistAll(NamedQueuePayload.NamedQueueEvent.SLOW_LOG);
58      if (LOG.isTraceEnabled()) {
59        LOG.trace("SlowLog Table Ops Chore is closing.");
60      }
61    }
62  
63  }