xamplr 1.9.9 → 1.9.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  ---
2
2
  :major: 1
3
3
  :minor: 9
4
- :patch: 9
4
+ :patch: 10
5
5
  :build:
@@ -324,57 +324,58 @@ module Xampl
324
324
  end
325
325
 
326
326
  def Xampl.read_only(target_persister)
327
- #TODO -- EXCLUSIVE ACCESS TO THE PERSISTER!!!
328
- name = target_persister.name
327
+ @@xampl_lock.synchronize(:EX) do
328
+ name = target_persister.name
329
329
 
330
- if block_given? then
331
- initial_persister = @@persister
332
- Xampl.enable_persister(name, target_persister.kind, target_persister.format)
333
-
334
- rollback = true
335
- original_automatic = @@persister.automatic
336
- original_changed = @changed
337
- @changed = {}
338
- begin
339
- Xampl.auto_persistence(false)
340
- #Xampl.block_future_changes(true)
341
-
342
- yield
343
- rollback = false
344
- ensure
345
- #### Xampl.auto_persistence(original_automatic)
346
- #### #Xampl.block_future_changes(false)
347
- ####
348
- #### if 0 < @changed.size then
349
- #### puts "CHANGED COUNT: #{@changed.size}"
350
- #### raise BlockedChange.new(target_persister)
351
- #### end
352
- ####
353
- #### @changed = original_changed
354
- ####
355
- #### puts "ROLLBACK(#{__LINE__})" if rollback
356
- #### Xampl.rollback if rollback
357
- #### @@persister = initial_persister
358
-
359
- Xampl.auto_persistence(original_automatic)
360
- #Xampl.block_future_changes(false)
361
-
362
- if 0 == @changed.size then
363
- @changed = original_changed
364
-
365
- #puts "ROLLBACK(#{__LINE__})" if rollback
366
- Xampl.rollback if rollback
367
- @@persister = initial_persister
368
- else
369
- #puts "CHANGED COUNT: #{@changed.size}"
370
- @changed = original_changed
371
-
372
- #puts "ROLLBACK(#{__LINE__})" if rollback
373
- Xampl.rollback
374
-
375
- @@persister = initial_persister
376
-
377
- raise BlockedChange.new(target_persister)
330
+ if block_given? then
331
+ initial_persister = @@persister
332
+ Xampl.enable_persister(name, target_persister.kind, target_persister.format)
333
+
334
+ rollback = true
335
+ original_automatic = @@persister.automatic
336
+ original_changed = @changed
337
+ @changed = {}
338
+ begin
339
+ Xampl.auto_persistence(false)
340
+ #Xampl.block_future_changes(true)
341
+
342
+ yield
343
+ rollback = false
344
+ ensure
345
+ #### Xampl.auto_persistence(original_automatic)
346
+ #### #Xampl.block_future_changes(false)
347
+ ####
348
+ #### if 0 < @changed.size then
349
+ #### puts "CHANGED COUNT: #{@changed.size}"
350
+ #### raise BlockedChange.new(target_persister)
351
+ #### end
352
+ ####
353
+ #### @changed = original_changed
354
+ ####
355
+ #### puts "ROLLBACK(#{__LINE__})" if rollback
356
+ #### Xampl.rollback if rollback
357
+ #### @@persister = initial_persister
358
+
359
+ Xampl.auto_persistence(original_automatic)
360
+ #Xampl.block_future_changes(false)
361
+
362
+ if 0 == @changed.size then
363
+ @changed = original_changed
364
+
365
+ #puts "ROLLBACK(#{__LINE__})" if rollback
366
+ Xampl.rollback if rollback
367
+ @@persister = initial_persister
368
+ else
369
+ #puts "CHANGED COUNT: #{@changed.size}"
370
+ @changed = original_changed
371
+
372
+ #puts "ROLLBACK(#{__LINE__})" if rollback
373
+ Xampl.rollback
374
+
375
+ @@persister = initial_persister
376
+
377
+ raise BlockedChange.new(target_persister)
378
+ end
378
379
  end
379
380
  end
380
381
  end
@@ -36,12 +36,16 @@ module Xampl
36
36
  raise MixedPersisters.new(@persister, self)
37
37
  elsif Xampl.persister == @persister then
38
38
  if not @persister.syncing then
39
- Xampl.lazy_load(self)
39
+ Xampl.read_only(@persister) do
40
+ Xampl.lazy_load(self)
41
+ end
40
42
  else
41
43
  puts "LOAD NEEDED(3): BAD IDEA, but load anyway (persister: #{@persister.name})"
42
44
  puts " #{self.class.name}"
43
45
  puts " pid: #{self.get_the_index}"
44
- Xampl.lazy_load(self)
46
+ Xampl.read_only(@persister) do
47
+ Xampl.lazy_load(self)
48
+ end
45
49
  # puts "LOAD NEEDED(3): REFUSED (persister: #{@persister.name})"
46
50
  # puts " #{self.class.name}"
47
51
  # puts " pid: #{self.get_the_index}"
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{xamplr}
8
- s.version = "1.9.9"
8
+ s.version = "1.9.10"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Bob Hutchison"]
12
- s.date = %q{2010-03-14}
12
+ s.date = %q{2010-03-18}
13
13
  s.description = %q{xamplr is the ruby version of xampl.}
14
14
  s.email = %q{hutch@recursive.ca}
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xamplr
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.9
4
+ version: 1.9.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bob Hutchison
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-03-14 00:00:00 -05:00
12
+ date: 2010-03-18 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency