You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oozie.apache.org by "Roman Shaposhnik (JIRA)" <ji...@apache.org> on 2011/09/10 06:07:10 UTC

[jira] [Reopened] (OOZIE-135) GH-109: Refactor Hadoop Accessor to do command pattern

     [ https://issues.apache.org/jira/browse/OOZIE-135?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Roman Shaposhnik reopened OOZIE-135:
------------------------------------


> GH-109: Refactor Hadoop Accessor to do command pattern
> ------------------------------------------------------
>
>                 Key: OOZIE-135
>                 URL: https://issues.apache.org/jira/browse/OOZIE-135
>             Project: Oozie
>          Issue Type: Bug
>            Reporter: Hadoop QA
>
> All Hadoop JobClient?/FileSystem access should be done using the following:
>     public interface HadoopFSCommand {
>         public void call(FileSystem fs) throws HadoopCommandException;
>     }
>     public interface HadoopJobCommand {
>         public void call(JobClient jobClient, FileSystem fs) throws HadoopCommandException;
>     }
>     //This replaces current StoreService
>     public class HadoopAccessorService implements Service {
>         ...
>         public void execute(final HadoopFSCommand fsCommand) throws HadoopCommandException {
>             //all instrumentation is missing here
>             UGI.doAs(
>                     FileSystem fs = GET FS
>                     try {
>                         fsCommand.call(fs);                    
>                     }
>                     finally {
>                       fs.close();        
>                     }
>             );
>         }
>         public void execute(final HadoopJobCommand fsCommand) throws HadoopCommandException {
>             //all instrumentation is missing here
>             UGI.doAs(
>                     FileSystem fs = GET FS
>                     JobClient jc = GET_JC
>                     try {
>                         fsCommand.call(jc, fs);                    
>                     }
>                     finally {
>                       try {
>                           jc.close();
>                       }
>                       catch () {                          
>                       }
>                       try {
>                           fs.close();        
>                       }
>                       catch () {                          
>                       }
>                     }
>             );
>         }
>     }
> The accessor should have the USER-UGI second level cache and a a config value should specify if the cache is to be used
> or not (if OFF do fs.close() on every call, if ON, do nothing, and cache should do eviction on no use timeout)

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira