[squeak-dev] The Inbox: System-ct.1136.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Feb 6 18:50:11 UTC 2020


Christoph Thiede uploaded a new version of System to project The Inbox:
http://source.squeak.org/inbox/System-ct.1136.mcz

==================== Summary ====================

Name: System-ct.1136
Author: ct
Time: 6 February 2020, 7:50:02.954648 pm
UUID: 0a637557-d32d-9347-bc4b-4f2bb95a707d
Ancestors: System-cmm.1131

Make Smalltalk more robust against interruptions/timeouts during sources compilation

A popular example is a test case that compiles a lot of methods and then is terminated via timeout. See [1] for an example. This commit ensures that the changes file does not remain closed when the method is curtailed.

Before probably destroyed your image, now works:

	[MCSnapshotResource mockPackage unload]
		valueWithin: 1 seconds "you may need to adapt the limit to reproduce"
		onTimeout: [].

[1] http://forum.world.st/BUG-MultiByteFileStream-Object-gt-gt-error-primGetPosition-failed-td5111181.html

=============== Diff against System-cmm.1131 ===============

Item was changed:
  ----- Method: SmalltalkImage>>forceChangesToDisk (in category 'sources, changes log') -----
  forceChangesToDisk
  	"Ensure that the changes file has been fully written to disk by closing and re-opening it. This makes the system more robust in the face of a power failure or hard-reboot."
  
  	| changesFile |
  	changesFile := SourceFiles at: 2.
  	(changesFile isKindOf: FileStream) ifTrue: [
  		changesFile flush.
+ 		SecurityManager default hasFileAccess ifTrue: [
+ 			[changesFile close] ensure: [
+ 				changesFile open: changesFile name forWrite: true]].
+ 		changesFile setToEnd].!
- 		SecurityManager default hasFileAccess ifTrue:[
- 			changesFile close.
- 			changesFile open: changesFile name forWrite: true].
- 		changesFile setToEnd.
- 	].
- !



More information about the Squeak-dev mailing list