Hi Saminda, Still I dont get why you need to record only time in waitFor method. Anyhow I am re-factoring this code. Lets do a code review and see whether i have missed anything.
Thanks Amila On Tue, Jul 2, 2013 at 9:22 PM, Saminda Wijeratne <[email protected]>wrote: > That is true, if the status was different from the previously read status, > then only the "setStatus" is called where the status and the time is > recorded. or else we only record the time. > > > On Tue, Jul 2, 2013 at 8:56 PM, Amila Jayasekara <[email protected] > >wrote: > > > Hi Saminda, > > > > > > > > > > On Tue, Jul 2, 2013 at 7:14 PM, Saminda Wijeratne <[email protected] > > >wrote: > > > > > is it the name you are confused with or the function of it? > > > > > > The waitFor function runs until the job is completed or failed. > > > > > > Correct. But actual status of the job is report to statusChange method. > > statusChange method calls "setStatus" method. The setStatus method has a > > call to > "GFacUtils.updateApplicationJobStatus(context,job.getIDAsString(), > > GFacUtils.getApplicationJobStatus(status));" > > > > So whether job is finished or failed is already recorded through the > > setStatus method. I guess we dont need to record it again in waitFor > > method. > > > > Thanks > > Amila > > > > > > > > > The way it > > > knows that the job is completed is by checking the gram status of the > job > > > periodically via a while loop. > > > > > > On Tue, Jul 2, 2013 at 6:34 PM, Amila Jayasekara < > > [email protected] > > > >wrote: > > > > > > > The "updateApplicationJobStatusUpdateTime" method is called from > > > > GramJobSubmissionListener.waitFor method. I dont understand why that > > > method > > > > is called from waitFor method. > > > > > > > > Could you please explain ? > > > > > > > > Thanks > > > > Amila > > > > > > > > > > > > On Tue, Jul 2, 2013 at 5:26 PM, Saminda Wijeratne < > [email protected] > > > > >wrote: > > > > > > > > > Hi Amila, > > > > > > > > > > These are my additions. Basically we are recording the status of > the > > > > > application execution with the time which it was observed. However > > > > > sometimes the same status is observed continuously by the > > > > > observers/listeners defined in the provider for that job. In those > > > times > > > > we > > > > > update only the time which that same status was observed last. > > > > > > > > > > If you think that the name of the function is confusing shall we > > change > > > > it? > > > > > These are util functions which the providers may or may not use for > > > their > > > > > convenience. > > > > > > > > > > Saminda > > > > > > > > > > > > > > > On Tue, Jul 2, 2013 at 4:57 PM, Amila Jayasekara < > > > > [email protected] > > > > > >wrote: > > > > > > > > > > > Hi Lahiru, > > > > > > > > > > > > I have few more questions related to this. > > > > > > In GFacUtils class I see following 2 methods; > > > > > > > > > > > > public static void > > > > > > updateApplicationJobStatusUpdateTime(JobExecutionContext context, > > > > String > > > > > > jobId, Date statusUpdateTime) > > > > > > public static void > > updateApplicationJobStatus(JobExecutionContext > > > > > > context, String jobId, ApplicationJobStatus status, Date > > > > > statusUpdateTime) > > > > > > > > > > > > What is the difference between about 2 methods ? More precisely I > > am > > > > > having > > > > > > difficulty understanding the need for 1st method. > > > > > > > > > > > > Thanks > > > > > > Amila > > > > > > > > > > > > > > > > > > > > > > > > On Tue, Jul 2, 2013 at 3:13 PM, Suresh Marru <[email protected]> > > > > wrote: > > > > > > > > > > > > > On Jul 2, 2013, at 2:19 PM, Saminda Wijeratne < > > [email protected]> > > > > > > wrote: > > > > > > > > > > > > > > > Are we not going to allow using the GFac libraries as > > standalone > > > > > tool? > > > > > > It > > > > > > > > could be useful for devs who dont want to use the workflow > > > context > > > > to > > > > > > run > > > > > > > > applications. > > > > > > > > > > > > > > I would vote against direct use of GFac API from clients. We > need > > > to > > > > > > > brainstorm and decide on the component level API's and their > > > > > implications > > > > > > > once we discuss Airavata 1.0( may be also 2.0) roadmaps. > > > > > > > > > > > > > > In short, I see the need for GFac API's to evolve to facilitate > > > more > > > > > > > dynamism and multi-phased interactions between workflow > > interpreter > > > > and > > > > > > > GFac. I think we should limit all client integrations to > Airavata > > > API > > > > > so > > > > > > we > > > > > > > can put in extra effort to ensure backward compatibility is > > > > maintained > > > > > > > within major versions. > > > > > > > > > > > > > > Suresh > > > > > > > > > > > > > > > On Tue, Jul 2, 2013 at 9:53 AM, Lahiru Gunathilake < > > > > > [email protected] > > > > > > > >wrote: > > > > > > > > > > > > > > > >> It's not required now. Please remove it. > > > > > > > >> > > > > > > > >> > > > > > > > >> Lahiru > > > > > > > >> > > > > > > > >> On Tuesday, July 2, 2013, Amila Jayasekara wrote: > > > > > > > >> > > > > > > > >>> Hi All, > > > > > > > >>> > > > > > > > >>> In GFacUtils I see methods like follows; > > > > > > > >>> > > > > > > > >>> public static void > > > > > > > >> updateApplicationJobStatusUpdateTime(JobExecutionContext > > > > > > > >>> context, String jobId, Date statusUpdateTime){ > > > > > > > >>> AiravataAPI airavataAPI = > > > > > > > >>> context.getGFacConfiguration().getAiravataAPI(); > > > > > > > >>> if(airavataAPI != null){ > > > > > > > >>> try { > > > > > > > >>> > > > > > > > >>> > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > airavataAPI.getProvenanceManager().updateApplicationJobStatusUpdateTime(jobId, > > > > > > > >>> statusUpdateTime); > > > > > > > >>> } catch (AiravataAPIInvocationException e) { > > > > > > > >>> log.error("Error in updating application job status time > > > > > > > >>> "+statusUpdateTime.toString()+" for job Id "+jobId+"!!!", > e); > > > > > > > >>> } > > > > > > > >>> } > > > > > > > >>> } > > > > > > > >>> > > > > > > > >>> Any particular reason to have "if(airavataAPI != null)" > > > > condition ? > > > > > > > >>> > > > > > > > >>> Thanks > > > > > > > >>> Amila > > > > > > > >>> > > > > > > > >> > > > > > > > >> > > > > > > > >> -- > > > > > > > >> System Analyst Programmer > > > > > > > >> PTI Lab > > > > > > > >> Indiana University > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
