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

Colin Patrick McCabe commented on HDFS-5430:
--------------------------------------------

I think it would be nicer to have something like this:
{code}
public class CacheDirectiveInfo {
  public static class Expiration {
    public static Expiration newRelative(long ms) {
      return new Expiration(ms, true);
    }

    public static Expiration newAbsolute(long ms) {
      return new Expiration(ms, false);
    }

    public static Expiration newAbsolute(Date date) {
      return new Expiration(date.toLong(), false);
    }

    private Expiration(long ms, boolean isRelative) {
      this.ms = ms;
      this.isRelative = isRelative;
    }

    public long toAbsolute() { // using local clock
       ...
    }

    private final long ms;
    private final boolean isRelative;
  }
 ...
}
{code}

That way, we wouldn't have to worry about the awkward situation of having two 
fields in {{CacheDirectiveInfo}}, which can't be both used at the same time.  
What do you think?

We can continue making this just a long in CacheDirective, since at that point, 
it's always absolute.  It would be nice to have a constant for NEVER, rather 
than hard-coding -1 (Sun style guide discourages magic numbers.)

I also wonder if we can add a {{boolean expired}} or something to 
{{CacheDirectiveStats}}, since otherwise the client can't easily figure out if 
the directive has expired.  After all, the clock on the NN might be different.

Looks good aside from that.

> Support TTL on CacheBasedPathDirectives
> ---------------------------------------
>
>                 Key: HDFS-5430
>                 URL: https://issues.apache.org/jira/browse/HDFS-5430
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>          Components: datanode, namenode
>            Reporter: Colin Patrick McCabe
>            Assignee: Andrew Wang
>            Priority: Minor
>         Attachments: hdfs-5430-1.patch, hdfs-5430-2.patch, hdfs-5430-3.patch
>
>
> It would be nice if CacheBasedPathDirectives would support an expiration 
> time, after which they would be automatically removed by the NameNode.  This 
> time would probably be in wall-block time for the convenience of system 
> administrators.



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to