View Single Post
  #8 (permalink)  
Old 02-25-2012, 06:48 AM
Jeremy Nicoll - news posts
Guest
 
Posts: n/a
Default Re: Bug 3274050 and 4.1.1 beta

Swifty <steve.j.swift@gmail.com> wrote:

>On Fri, 24 Feb 2012 17:25:42 +0000, Jeremy Nicoll - news posts
><jn.nntp.scrap007@wingsandbeaks.org.uk> wrote:
>
>>Except for the multiple simultaneous access issue. IIRC (having seen your
>>common routines code) you don't have your log write code do multiple
>>retries, nor have a fallback if none of those work.

>
>"Call stream log,'c','open write append'" and a simple:
>"call lineout log,date() time() text"
>
>... are all you need, at least in the Linux environment.


Is that because you're only writing a single line? If so it'd imply that
the writing of a line is an atomic process in the file system and possibly
the OS. I don't see why it should be though - I think I thought unix files
were just character streams.

What stops a line being written by one process from being mixed up with one
from another?


> Linux assumes that the programmer knows what they want, so there are no
> interlocks to prevent concurrent write from multiple processes.


So why did your testing never produce mixed-up output?


> But, like you, I was leery of problems. So I wrote a test program. You
> passed it an integer, N. It started N "threads". Each thread wrote 10,000
> lines to the log file, numbered 1-10,000.


Did those threads run under separate processes?

>When the threads had all ended, the main routine scanned the log file
>to ensure that it had N entries for every number from 1-10,000
>
>I ran it many times, with values of N from 1-100. It never failed. I
>was right to trust Linux to do what I wanted, and not what it thought
>should happen. :-)


But why? I would wan to understand why output hadn't been mixed up; that
it hadn't suggests to me that the test was in some way inadequate.

>As it happens, I do also check the results of OPEN and LINEOUT, and
>log failures in the common "Things you need to worry about" log (yes,
>another of those global log files I'm so enamoured of).


If the OS doesn't protect the file, I'm not sure that testing the return
code from a lineout would tell you anything. A lineout would have caused a
number of characters to be sent to a file ok. But if something else is also
sending chars to the file that wouldn't affect lineout.

>Of course, it's conceivable that there is an error in the "Things you
>need to worry about" log code, but this is getting recursive.



--
Jeremy C B Nicoll - my opinions are my own.

Email sent to my from-address will be deleted. Instead, please reply
to newsreplyaaa@wingsandbeaks.org.uk replacing "aaa" by "284".
Reply With Quote