accumulo-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ACCUMULO-3089) Create a volume chooser that makes decisions based on table attributes
Date Fri, 26 Sep 2014 04:53:38 GMT

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

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

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

    https://github.com/apache/accumulo/pull/16#discussion_r18073730
  
    --- Diff: server/base/src/main/java/org/apache/accumulo/server/fs/StaticVolumeChooser.java
---
    @@ -0,0 +1,68 @@
    +/*
    + * 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.server.fs;
    +
    +import java.util.Map;
    +
    +import org.apache.accumulo.core.conf.AccumuloConfiguration.AllFilter;
    +import org.apache.accumulo.core.conf.AccumuloConfiguration.PropertyFilter;
    +import org.apache.log4j.Logger;
    +
    +public class StaticVolumeChooser implements VolumeChooser {
    +  private static final Logger log = Logger.getLogger(StaticVolumeChooser.class);
    +
    +  public StaticVolumeChooser() {}
    +
    +  @Override
    +  public String choose(VolumeChooserEnvironment env, String[] options) {
    +    // Get the current table's properties, and find the preferred volumes property
    +    PropertyFilter filter = new AllFilter();
    +    Map<String,String> props = new java.util.HashMap<String,String>();
    +    env.getProperties(props, filter);
    +    String volume = props.get("table.custom.preferredVolumes");
    +    log.info("In custom chooser");
    +    log.info("Volumes: " + volume);
    +    log.info("TableID: " + env.getTableId());
    +
    +    if (volume != null) {
    +      // If preferred volume is specified, make sure that volume is an instance volume.
    +      boolean usePreferred = false;
    +      for (String s : options) {
    +        if (volume.equals(s)) {
    +          usePreferred = true;
    +          break;
    +        }
    +      }
    +
    +      // If the preferred volume is an instance volume return that volume.
    +      if (usePreferred)
    +        return volume;
    +      // Otherwise warn the user that it is not an instance volume and that the chooser
will default to randomly choosing from the instance volumes.
    +      else
    +        log.warn("Preferred volume, " + volume + ", is not an instance volume.  Defaulting
to randomly choosing from instance volumes");
    +    }
    +    // If the preferred volumes property is not specified, warn the user, then use a
RandomVolumeChoser to choose randomly from the given list of volumes
    +    log.warn("No preferred volume specified.  Defaulting to randomly choosing from instance
volumes");
    +    return new RandomVolumeChooser().choose(options);
    --- End diff --
    
    Lots of object creation and garbage collection. Couldn't this extend RandomVolumeChooser
and call `super.choose(options)` when it can't find a static volume?


> Create a volume chooser that makes decisions based on table attributes
> ----------------------------------------------------------------------
>
>                 Key: ACCUMULO-3089
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-3089
>             Project: Accumulo
>          Issue Type: Improvement
>            Reporter: Christopher Tubbs
>            Assignee: Jenna Huston
>
> Use case:
> User provisions multiple volumes, some with tmpfs drives, some with SSDs, some with traditional
magnetic spindle hard drives. A volume chooser could use attribute information on tables (ACCUMULO-2841)
to decide which volume to choose when creating new tablets.



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

Mime
View raw message