python-diamond/Diamond

Will this code in server.py mess the log?

kramerli opened this issue · 1 comments

I can see below code in server.py

    handlers_process = multiprocessing.Process(
        name="Handlers",
        target=handler_process,
        args=(self.handlers, self.metric_queue, self.log),
    )

I did some search on the internet, a lot posts said that logging do not have a lock between process. So use log in multiprocessing may cause the content of log be messed.

Will this code have this kind of problem?
If not then why?

Hi @kramerli,

This is a good question. Writing to the same file from different processes can result in weird behaviour - the data written might be interleaved and/or incomplete, or worse, the file may become corrupted. I think there will be other factors in play though, for example what type of file system is in use.

I think this is something that will have to be investigated further and fixed.