nexia_event_store 0.5.5 → 0.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 75c841fd2b24716c2dbd7b9b13f5bf7a36b49245
4
- data.tar.gz: 566d2e421c91050e0772e2ccbc5d27c03c096901
3
+ metadata.gz: e58e3e5c440193f2fd2dc15f54da89b583c44e8a
4
+ data.tar.gz: 1f8b0d7dcf3377900daba164bbe6fe22267d2302
5
5
  SHA512:
6
- metadata.gz: dfff57a2513a6ac67143e6aab4debc8e52349e81694f3956aa41383300b3d08284be7b5539284f3fcb1a09039d4020d4338fe45860e25cd4bcde329b2144b1f6
7
- data.tar.gz: f6d785fdd24304b0b33cef67726cc7a50581c895300b41da3e3d57c4ee906914e23058b7a8542a29a0cca8842d173a5f157dbf1ce9217936bbfece606c18c7ff
6
+ metadata.gz: ca7056b0acca4000368fc3afe4f39c7e9bfca81c46123c1fb08ae6883f00c1976bbee15b677ed62ac8ed433b2a2e4bb6de3f6749b6e47279d7c30e1d10ac4435
7
+ data.tar.gz: 4eae746953a51324a03c8433a598ac417d09c679c4f89c941f1f76e3f9de041caa33e2f50b3f0d5c660f86ee578ab7e869f58528c0f70dc2cdcd76c52453b0b5
@@ -1,3 +1,5 @@
1
+ require "logger"
2
+
1
3
  module EventStore
2
4
  class Snapshot
3
5
  include Enumerable
@@ -31,22 +33,39 @@ module EventStore
31
33
  auto_rebuild_snapshot(read_raw_snapshot).count
32
34
  end
33
35
 
34
- def each
35
- events_hash = auto_rebuild_snapshot(read_raw_snapshot)
36
- events_hash.inject([]) do |snapshot, (key, value)|
36
+ def each(logger=default_logger)
37
+ logger.info { "#{self.class.name}#each for #{@aggregate.id}" }
38
+ t = Time.now
39
+ events_hash = auto_rebuild_snapshot(read_raw_snapshot(logger), logger)
40
+ logger.debug { "#{self.class.name}#auto_rebuild_snapshot took #{Time.now - t} seconds for #{@aggregate.id}" }
41
+
42
+ t = Time.now
43
+ result_hash = events_hash.inject([]) do |snapshot, (key, value)|
37
44
  fully_qualified_name, _ = key.split(EventStore::SNAPSHOT_KEY_DELIMITER)
38
45
  raw_event = value.split(EventStore::SNAPSHOT_DELIMITER)
39
46
  version = raw_event.first.to_i
40
47
  serialized_event = EventStore.unescape_bytea(raw_event[1])
41
48
  occurred_at = Time.parse(raw_event.last)
42
49
  snapshot + [SerializedEvent.new(fully_qualified_name, serialized_event, version, occurred_at)]
43
- end.sort_by(&:version).each { |e| yield e }
50
+ end
51
+ logger.debug { "#{self.class.name} serializing events took #{Time.now - t} seconds" }
52
+ result_hash.sort_by(&:version).each { |e| yield e }
44
53
  end
45
54
 
46
- def rebuild_snapshot!
55
+ def rebuild_snapshot!(logger=default_logger)
56
+ logger.info { "#{self.class.name}#rebuild_snapshot!" }
57
+ t = Time.now
47
58
  delete_snapshot!
48
- corrected_events = @aggregate.events.all.map{|e| e[:occurred_at] = TimeHacker.translate_occurred_at_from_local_to_gmt(e[:occurred_at]); e}
59
+ logger.debug { "Deleting snapshot took #{Time.now - t} seconds" }
60
+ t = Time.now
61
+ all_events = @aggregate.events.all
62
+ logger.debug { "getting all events took #{Time.now - t} seconds" }
63
+ t = Time.now
64
+ corrected_events = all_events.map{|e| e[:occurred_at] = TimeHacker.translate_occurred_at_from_local_to_gmt(e[:occurred_at]); e}
65
+ logger.debug { "correcting occurred_at on all events took #{Time.now - t} seconds" }
66
+ t = Time.now
49
67
  store_snapshot(corrected_events)
68
+ logger.debug { "storing new snapshot took #{Time.now - t} seconds" }
50
69
  end
51
70
 
52
71
  def delete_snapshot!
@@ -76,6 +95,10 @@ module EventStore
76
95
 
77
96
  private
78
97
 
98
+ def default_logger
99
+ Logger.new('/dev/null')
100
+ end
101
+
79
102
  def snapshot_key(event)
80
103
  [event[:fully_qualified_name], event[:sub_key] || EventStore::NO_SUB_KEY].join(EventStore::SNAPSHOT_KEY_DELIMITER)
81
104
  end
@@ -103,20 +126,26 @@ module EventStore
103
126
  current_versions
104
127
  end
105
128
 
106
- def read_raw_snapshot
107
- @redis.hgetall(snapshot_table)
129
+ def read_raw_snapshot(logger=default_logger)
130
+ t = Time.now
131
+ @redis.hgetall(snapshot_table).tap { |_snapshot|
132
+ logger.debug { "#{self.class.name}#read_raw_snapshot took #{Time.now - t} seconds" }
133
+ }
108
134
  end
109
135
 
110
- def auto_rebuild_snapshot(events_hash)
136
+ def auto_rebuild_snapshot(events_hash, logger=default_logger)
137
+ logger.info { "#{self.class.name}#auto_rebuild_snapshot(#{events_hash})" }
111
138
  return events_hash unless events_hash.empty? #got it? return it
112
139
 
140
+ t = Time.now
141
+ logger.debug { "#{self.class.name} about to query db to see if anything is there" }
113
142
  event = @aggregate.events.select(:version).limit(1).all
143
+ logger.debug { "#{self.class.name} took #{Time.now - t} seconds query db for version" }
114
144
  return events_hash if event.nil? #return nil if no events in the ES
115
145
 
116
146
  # so there are events in the ES but there is no redis snapshot
117
- rebuild_snapshot!
118
- events_hash = read_raw_snapshot
147
+ rebuild_snapshot!(logger)
148
+ events_hash = read_raw_snapshot(logger)
119
149
  end
120
-
121
150
  end
122
151
  end
@@ -1,3 +1,3 @@
1
1
  module EventStore
2
- VERSION = '0.5.5'
2
+ VERSION = '0.5.6'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nexia_event_store
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Saieg, John Colvin