Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-26680

Close and do not write trailer for the broken WAL writer

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 3.0.0-alpha-1, 2.0.0
    • 2.5.0, 3.0.0-alpha-3, 2.4.12
    • wal
    • None

    Description

      public static AsyncWriter createAsyncWriter(Configuration conf, FileSystem fs, Path path,
          boolean overwritable, long blocksize, EventLoopGroup eventLoopGroup,
          Class<? extends Channel> channelClass, StreamSlowMonitor monitor) throws IOException {
        // Configuration already does caching for the Class lookup.
        Class<? extends AsyncWriter> logWriterClass = conf.getClass(
          WRITER_IMPL, AsyncProtobufLogWriter.class, AsyncWriter.class);
        try {
          AsyncWriter writer = logWriterClass.getConstructor(EventLoopGroup.class, Class.class)
              .newInstance(eventLoopGroup, channelClass);
          writer.init(fs, path, conf, overwritable, blocksize, monitor);
          return writer;
        } catch (Exception e) {
          if (e instanceof CommonFSUtils.StreamLacksCapabilityException) {
            LOG.error("The RegionServer async write ahead log provider " +
              "relies on the ability to call " + e.getMessage() + " for proper operation during " +
              "component failures, but the current FileSystem does not support doing so. Please " +
              "check the config value of '" + CommonFSUtils.HBASE_WAL_DIR + "' and ensure " +
              "it points to a FileSystem mount that has suitable capabilities for output streams.");
          } else {
            LOG.debug("Error instantiating log writer.", e);
          }
          Throwables.propagateIfPossible(e, IOException.class);
          throw new IOException("cannot get log writer", e);
        }
      } 

      I think writer should be closed when encounters init exception here.

      This can reduce the recoverLease time before log split, and will reduce side effects after HBASE-26552

      Broken writers need to be closed, so that when doing log split, there will be no need to recover lease for those length 0 wals.

      Attachments

        Activity

          People

            Xiaolin Ha Xiaolin Ha
            Xiaolin Ha Xiaolin Ha
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: