[ 
https://issues.apache.org/jira/browse/ACCUMULO-4187?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15238559#comment-15238559
 ] 

ASF GitHub Bot commented on ACCUMULO-4187:
------------------------------------------

Github user joshelser commented on a diff in the pull request:

    https://github.com/apache/accumulo/pull/90#discussion_r59489739
  
    --- Diff: 
core/src/main/java/org/apache/accumulo/core/file/streams/PositionedOutputs.java 
---
    @@ -0,0 +1,55 @@
    +/*
    + * Licensed to the Apache Software Foundation (ASF) under one or more
    + * contributor license agreements.  See the NOTICE file distributed with
    + * this work for additional information regarding copyright ownership.
    + * The ASF licenses this file to You under the Apache License, Version 2.0
    + * (the "License"); you may not use this file except in compliance with
    + * the License.  You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + */
    +package org.apache.accumulo.core.file.streams;
    +
    +import java.io.FilterOutputStream;
    +import java.io.IOException;
    +import java.io.OutputStream;
    +import org.apache.hadoop.fs.FSDataOutputStream;
    +
    +public class PositionedOutputs {
    +  public static PositionedOutputStream wrap(final OutputStream fout) {
    +    if (fout instanceof FSDataOutputStream) {
    +      return new PositionedOutputStream(fout) {
    +        @Override
    +        public long position() throws IOException {
    +          return ((FSDataOutputStream) fout).getPos();
    +        }
    +      };
    +    } else if (fout instanceof PositionedOutput) {
    +      return new PositionedOutputStream(fout) {
    +        @Override
    +        public long position() throws IOException {
    +          return ((PositionedOutput) fout).position();
    +        }
    +      };
    +    } else {
    +      return new PositionedOutputStream(fout) {
    --- End diff --
    
    check for non-null?


> Rate limiting of major compactions
> ----------------------------------
>
>                 Key: ACCUMULO-4187
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-4187
>             Project: Accumulo
>          Issue Type: Improvement
>          Components: core, tserver
>    Affects Versions: 1.8.0
>            Reporter: Shawn Walker
>            Assignee: Shawn Walker
>            Priority: Minor
>             Fix For: 1.8.0
>
>
> In discussing [ACCUMULO-4166] with Keith Turner, we decided that the 
> underlying issue is that major compactions can overwhelm a tablet server, 
> rendering it nearly unresponsive.
> To address this, we should take a cue from Apache Cassandra and restrict how 
> quickly we perform major compactions.  Rate limiting reads and writes 
> involved in major compactions will directly affect the IO load caused by 
> major compactions, and should also indirectly affect the CPU load.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to