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

Veena Basavaraj updated SQOOP-1652:
-----------------------------------
    Fix Version/s:     (was: 1.99.5)
                   2.0.0

> Submit/Start terminology and SubmissionStatus enums in client and server 
> clarifications
> ---------------------------------------------------------------------------------------
>
>                 Key: SQOOP-1652
>                 URL: https://issues.apache.org/jira/browse/SQOOP-1652
>             Project: Sqoop
>          Issue Type: Bug
>            Reporter: Veena Basavaraj
>            Assignee: Veena Basavaraj
>             Fix For: 2.0.0
>
>
> This ticket would like to address 2 broader questions.
> What is the terminology we would want to use for job execution process. 
> There are 2 words very inconsistently used in the code base. Submit/ Start in 
> fact mean 2 different things, there are client/ server apis that use START, 
> but there are error messages and enums communicating status as SUBMITTED in 
> the client and STARTED in other places. 
> Second, Some discussions have alluded that client and the rest API are 
> different? I want to challenge this and ask why ? What is the reasoning for 
> it to be different. It just adds a lot of overhead to think about 2 of these 
> growing apart differently, as a long term contributor to this project, I'd 
> like to minimize this deviation if there is no solid reason to have it that 
> way. To some folks this might look a bit trivial but it will help us not 
> having to debate about things every time we are in this area adding new 
> features. 
> the following using the SERVER status enum
> {code}
> @SuppressWarnings("static-access")
>   public ShowJobStatusFunction() {
>     this.addOption(OptionBuilder.hasArg().withArgName(Constants.OPT_JID)
>        .withDescription(resourceString(Constants.RES_PROMPT_JOB_ID))
>        .withLongOpt(Constants.OPT_JID)
>        .create(Constants.OPT_JID_CHAR));
>   }
>   @Override
>   public Object executeFunction(CommandLine line, boolean isInteractive) {
>     if (line.hasOption(Constants.OPT_JID)) {
>       MSubmission submission = client.getJobStatus(getLong(line, 
> Constants.OPT_JID));
>       if(submission.getStatus().isFailure() || 
> submission.getStatus().equals(SubmissionStatus.SUCCEEDED)) {
>         SubmissionDisplayer.displayHeader(submission);
>         SubmissionDisplayer.displayFooter(submission);
>       } else {
>         SubmissionDisplayer.displayHeader(submission);
>         SubmissionDisplayer.displayProgress(submission);
>       }
>     } else {
>       return null;
>     }
> {code}
> the following startJob in cleint code calls the server status and then uses 
> its OWN enum to decide what to show.
> {code}
>  MSubmission submission = 
> resourceRequests.startJob(jobId).getSubmissions().get(0);
>     while(submission.getStatus().isRunning()) {
>       if(submitted) {
>         invokeSubmissionCallback(callback, submission, 
> SubmissionStatus.SUBMITTED);
>         submitted = false;
>       } else {
>         invokeSubmissionCallback(callback, submission, 
> SubmissionStatus.UPDATED);
>       }
>       Thread.sleep(pollTime);
>       submission = getJobStatus(jobId);
>     }
>     invokeSubmissionCallback(callback, submission, SubmissionStatus.FINISHED);
>     return submission;
>   }
> {code}
> But not having a consistent view of things will lead to confusion down the 
> line when new features are added.
> Similarly we need have our design philosophy around concrete on other things 
> in the code
> 1. How we distinguish between the connector and execution engine 
> responsibilities 
> 2. How we think of the sqoop internal/core behavior vs the API behavior. 
> 3. Repository API: How should it evolve? Should I expose an API to allow 
> nulls in the SQI_INPUT names or should I enforce this in the SQOOP code and 
> not leave it to the decision of the repository implementation
> Today we have unique name constraints in the Derby. How can we enforce such 
> constraints are included in every new implementation we add ? 



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

Reply via email to