[squeak-dev] Reassessing the hack in WriteStream>>nextChunkPut: (was: Squeak 4.6 release update)

Tobias Pape Das.Linux at gmx.de
Sun Mar 8 19:49:40 UTC 2015


On 08.03.2015, at 20:43, Levente Uzonyi <leves at elte.hu> wrote:

> On Sun, 8 Mar 2015, Tobias Pape wrote:
> 
>> Hi,
>> 
>> thanks for taking the time to check!
>> 
>> 
>> On 08.03.2015, at 20:03, Levente Uzonyi <leves at elte.hu> wrote:
>> 
>>> 
>>> #flush is pretty costly, and IMO it's called way too often if it's in
>>> #nextChunkPut:. The most common workaround to avoid frequent calls is to use InMidstOfFileinNotification to check if it's a bulk write, and flush only once in those cases. For some reason this technique is not used in case of class comments.
>>> I changed the last lines of ClassDescription >> #classComment:stamp: in my image to
>>> 
>>> 	self organization classComment: (RemoteString newString: aString onFileNumber: 2) stamp: aStamp.
>>> 	InMidstOfFileinNotification signal ifFalse: [file flush].
>>> 	SystemChangeNotifier uniqueInstance classCommented: self.
>>> 
>>> Then removed the #flush from WriteStream >> #nextChunkPut:, and it seems to me that the problem is gone.
>> 
>> Can you tell me whether the Changes file is read/written via one stream or two?
>> I understood its  two file descriptors but are these two in different streams or
>> the same stream?
> 
> Of course, those are two (or more) different streams. We use SourceFiles at: 2 for writing and CurrentReadOnlySourceFiles at: 2 for reading.

Darn; if it had been a ReadWriteStream, one could say that we'd only really needed #flush when
we switch from writing to reading mode….
So it is more elaborate.

Best
	-Tobias


More information about the Squeak-dev mailing list