View Javadoc

1   /*
2    * Copyright 2010 The Apache Software Foundation
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.regionserver;
21  
22  import java.io.IOException;
23  
24  /**
25   * A package protected interface for a store flushing.
26   * A store flusher carries the state required to prepare/flush/commit the
27   * store's cache.
28   */
29  interface StoreFlusher {
30  
31    /**
32     * Prepare for a store flush (create snapshot)
33     *
34     * Requires pausing writes.
35     *
36     * A very short operation.
37     */
38    void prepare();
39  
40    /**
41     * Flush the cache (create the new store file)
42     *
43     * A length operation which doesn't require locking out any function
44     * of the store.
45     *
46     * @throws IOException in case the flush fails
47     */
48    void flushCache() throws IOException;
49  
50    /**
51     * Commit the flush - add the store file to the store and clear the
52     * memstore snapshot.
53     *
54     * Requires pausing scans.
55     *
56     * A very short operation
57     *
58     * @return
59     * @throws IOException
60     */
61    boolean commit() throws IOException;
62  }