>>         Now the problem is not program hang, but the container quit
before the “closeFiles” method executed completely.

It's unlikely that the container quit without returning from *close*. Are
you sure there were filesList is not empty? I'd suggest adding more logging.

I'm assuming you are calling *closeFiles* in the same thread?

On Wed, Aug 23, 2017 at 11:53 PM, 舒琦 <sh...@eefung.com> wrote:

> Hi Jagadish,
>
>         When samza job is shutdown, “Begin to stop” is printed out in the
> log file, but not the log in closeFiles.
>         Now the problem is not program hang, but the container quit before
> the “closeFiles” method executed completely.
>
>         Thanks.
>
> ————————
> Qi Shu
>
> > 在 2017年8月24日,14:44,Jagadish Venkatraman <jagadish1...@gmail.com> 写道:
> >
> > Is "Begin to close file" printed? Where exactly is your application
> stalled
> > ? I'd suggest you take a stack dump.
> >
> > On Wed, Aug 23, 2017 at 11:32 PM, 舒琦 <sh...@eefung.com> wrote:
> >
> >> Hi Jagadish,
> >>
> >>        Below is part of the related code, log “"Begin to stop” is
> printed
> >> out.
> >>
> >>        Thank you!
> >>
> >> public abstract class MyProducer implements SystemProducer {
> >>
> >>    @Override
> >>    public void stop() {
> >>        LOGGER.info("Begin to stop");
> >>
> >>        closeFiles();
> >>
> >>        LOGGER.info("End to stop");
> >>    }
> >>
> >>    @Override
> >>    protected void closeFiles() throws IOException {
> >>        closeFiles(statusFiles);
> >>        closeFiles(interactionFiles);
> >>    }
> >>
> >>    private void closeFiles(Map<String, FileInWriting> files) throws
> >> IOException {
> >>        for (FileInWriting statusFile : files.values()) {
> >>            LOGGER.info("Begin to close file: {}",
> >> statusFile.getFilePath());
> >>            statusFile.getWriter().hflush();
> >>            statusFile.getWriter().close();
> >>            renameFile(statusFile.getFilePath());
> >>            LOGGER.info("Successfully close file: {}",
> >> statusFile.getFilePath());
> >>        }
> >>
> >>        files.clear();
> >>    }
> >>
> >> }
> >>
> >>
> >> ————————
> >> Qi Shu
> >>
> >>> 在 2017年8月24日,14:21,Jagadish Venkatraman <jagadish1...@gmail.com> 写道:
> >>>
> >>> Hi Qi,
> >>>
> >>>>> the stop method in SystemProducer is called, but the close files
> >>> operation(may need some time, there may be cache data to be flushed) in
> >>> stop method is not executed completely
> >>>
> >>> Are you seeing the *close()* method hang? SystemProducer.*close* is a
> >>> synchronous operation, and will block for the *close* method to finish.
> >>>
> >>> Best,
> >>> Jagadish
> >>>
> >>> On Wed, Aug 23, 2017 at 11:17 PM, 舒琦 <sh...@eefung.com> wrote:
> >>>
> >>>> Hi,
> >>>>
> >>>>       I write a SystemProducer for HDFS and everything is fine. When
> >>>> samza job is shutdown, the stop method in SystemProducer is called,
> but
> >> the
> >>>> close files operation(may need some time, there may be cache data to
> be
> >>>> flushed) in stop method is not executed completely.
> >>>>
> >>>>       How can I resolve this problem?
> >>>>
> >>>>       Thanks!
> >>>>
> >>>> ————————
> >>>> Qi Shu
> >>>>
> >>>>
> >>>
> >>>
> >>> --
> >>> Jagadish V,
> >>> Graduate Student,
> >>> Department of Computer Science,
> >>> Stanford University
> >>
> >>
> >
> >
> > --
> > Jagadish V,
> > Graduate Student,
> > Department of Computer Science,
> > Stanford University
>
>


-- 
Jagadish V,
Graduate Student,
Department of Computer Science,
Stanford University

Reply via email to