View Javadoc

1   /*
2    * Copyright 2011 The Apache Software Foundation
3    *
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *     http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing, software
15   * distributed under the License is distributed on an "AS IS" BASIS,
16   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17   * See the License for the specific language governing permissions and
18   * limitations under the License.
19   */
20  package org.apache.hadoop.hbase.regionserver.wal;
21  
22  import java.io.IOException;
23  import org.apache.hadoop.fs.Path;
24  import org.apache.hadoop.hbase.HRegionInfo;
25  import org.apache.hadoop.hbase.HTableDescriptor;
26  
27  /**
28   * Get notification of {@link HLog}/WAL log events. The invocations are inline
29   * so make sure your implementation is fast else you'll slow hbase.
30   */
31  public interface WALActionsListener {
32  
33    /**
34     * The WAL is going to be rolled. The oldPath can be null if this is
35     * the first log file from the regionserver.
36     * @param oldPath the path to the old hlog
37     * @param newPath the path to the new hlog
38     */
39    public void preLogRoll(Path oldPath, Path newPath) throws IOException;
40  
41    /**
42     * The WAL has been rolled. The oldPath can be null if this is
43     * the first log file from the regionserver.
44     * @param oldPath the path to the old hlog
45     * @param newPath the path to the new hlog
46     */
47    public void postLogRoll(Path oldPath, Path newPath) throws IOException;
48  
49    /**
50     * The WAL is going to be archived.
51     * @param oldPath the path to the old hlog
52     * @param newPath the path to the new hlog
53     */
54    public void preLogArchive(Path oldPath, Path newPath) throws IOException;
55  
56    /**
57     * The WAL has been archived.
58     * @param oldPath the path to the old hlog
59     * @param newPath the path to the new hlog
60     */
61    public void postLogArchive(Path oldPath, Path newPath) throws IOException;
62  
63    /**
64     * A request was made that the WAL be rolled.
65     */
66    public void logRollRequested();
67  
68    /**
69     * The WAL is about to close.
70     */
71    public void logCloseRequested();
72  
73    /**
74    * Called before each write.
75    * @param info
76    * @param logKey
77    * @param logEdit
78    */
79   public void visitLogEntryBeforeWrite(HRegionInfo info, HLogKey logKey,
80     WALEdit logEdit);
81  
82    /**
83     *
84     * @param htd
85     * @param logKey
86     * @param logEdit
87     */
88   public void visitLogEntryBeforeWrite(HTableDescriptor htd, HLogKey logKey,
89     WALEdit logEdit);
90  
91  }