1 /*
2 * Copyright 2010 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
21 package org.apache.hadoop.hbase.coprocessor;
22
23 import org.apache.hadoop.hbase.Coprocessor;
24 import org.apache.hadoop.hbase.HRegionInfo;
25 import org.apache.hadoop.hbase.regionserver.wal.HLogKey;
26 import org.apache.hadoop.hbase.regionserver.wal.WALEdit;
27
28 import java.io.IOException;
29
30 /**
31 * It's provided to have a way for coprocessors to observe, rewrite,
32 * or skip WALEdits as they are being written to the WAL.
33 *
34 * {@link org.apache.hadoop.hbase.coprocessor.RegionObserver} provides
35 * hooks for adding logic for WALEdits in the region context during reconstruction,
36 *
37 * Defines coprocessor hooks for interacting with operations on the
38 * {@link org.apache.hadoop.hbase.regionserver.wal.HLog}.
39 */
40 public interface WALObserver extends Coprocessor {
41
42 /**
43 * Called before a {@link org.apache.hadoop.hbase.regionserver.wal.WALEdit}
44 * is writen to WAL.
45 *
46 * @param ctx
47 * @param info
48 * @param logKey
49 * @param logEdit
50 * @return true if default behavior should be bypassed, false otherwise
51 * @throws IOException
52 */
53 boolean preWALWrite(ObserverContext<WALCoprocessorEnvironment> ctx,
54 HRegionInfo info, HLogKey logKey, WALEdit logEdit) throws IOException;
55
56 /**
57 * Called after a {@link org.apache.hadoop.hbase.regionserver.wal.WALEdit}
58 * is writen to WAL.
59 *
60 * @param ctx
61 * @param info
62 * @param logKey
63 * @param logEdit
64 * @throws IOException
65 */
66 void postWALWrite(ObserverContext<WALCoprocessorEnvironment> ctx,
67 HRegionInfo info, HLogKey logKey, WALEdit logEdit) throws IOException;
68 }