dp_stm_map 0.0.2
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.
- data/.gitignore +18 -0
- data/.rspec +1 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +622 -0
- data/README.md +115 -0
- data/Rakefile +1 -0
- data/bin/dp_map_manager.rb +47 -0
- data/cucumber.yml +2 -0
- data/dp_stm_map.gemspec +29 -0
- data/features/client_reconnect.feature +13 -0
- data/features/persistence.feature +12 -0
- data/features/replication.feature +9 -0
- data/features/running_manager.feature +19 -0
- data/features/step_definitions/client_reconnect_steps.rb +28 -0
- data/features/step_definitions/persistence_steps.rb +49 -0
- data/features/step_definitions/replication_steps.rb +15 -0
- data/features/step_definitions/running_server_steps.rb +10 -0
- data/features/step_definitions/transaction_fail_steps.rb +11 -0
- data/features/support/env.rb +80 -0
- data/features/transaction_fail.feature +7 -0
- data/lib/dp_stm_map/Client.rb +268 -0
- data/lib/dp_stm_map/ClientLocalStore.rb +119 -0
- data/lib/dp_stm_map/InMemoryStmMap.rb +147 -0
- data/lib/dp_stm_map/Manager.rb +370 -0
- data/lib/dp_stm_map/Message.rb +126 -0
- data/lib/dp_stm_map/ObjectStore.rb +99 -0
- data/lib/dp_stm_map/version.rb +16 -0
- data/lib/dp_stm_map.rb +20 -0
- data/server.profile +547 -0
- data/spec/dp_stm_map/ClientLocalStore_spec.rb +78 -0
- data/spec/dp_stm_map/Client_spec.rb +133 -0
- data/spec/dp_stm_map/InMemoryStmMap_spec.rb +10 -0
- data/spec/dp_stm_map/Manager_spec.rb +323 -0
- data/spec/dp_stm_map/Message_spec.rb +21 -0
- data/spec/dp_stm_map/ObjectStore_spec.rb +87 -0
- data/spec/dp_stm_map/StmMap_shared.rb +432 -0
- metadata +235 -0
data/server.profile
ADDED
@@ -0,0 +1,547 @@
|
|
1
|
+
Thread ID: 5718000
|
2
|
+
Fiber ID: 8056700
|
3
|
+
Total: 27.451034
|
4
|
+
Sort by: self_time
|
5
|
+
|
6
|
+
%self total self wait child calls name
|
7
|
+
0.03 0.008 0.008 0.000 0.000 1 OpenSSL::X509::Store#set_default_paths
|
8
|
+
0.01 0.048 0.002 0.000 0.046 49 *Kernel#gem_original_require
|
9
|
+
0.01 0.002 0.002 0.000 0.000 398 <Class::File>#file?
|
10
|
+
0.00 0.001 0.001 0.000 0.000 7 <Class::Encoding>#find
|
11
|
+
0.00 0.007 0.001 0.000 0.006 309 *Array#each
|
12
|
+
0.00 0.001 0.001 0.000 0.000 998 Module#method_added
|
13
|
+
0.00 0.000 0.000 0.000 0.000 3 Regexp#match
|
14
|
+
0.00 0.004 0.000 0.000 0.004 129 Gem::Specification#contains_requirable_file?
|
15
|
+
0.00 0.000 0.000 0.000 0.000 1 TCPServer#initialize
|
16
|
+
0.00 0.001 0.000 0.000 0.000 260 *Gem::Specification#full_gem_path
|
17
|
+
0.00 0.000 0.000 0.000 0.000 395 Symbol#to_s
|
18
|
+
0.00 0.000 0.000 0.000 0.000 1 Thread#join
|
19
|
+
0.00 0.000 0.000 0.000 0.000 54 IO#set_encoding
|
20
|
+
0.00 0.000 0.000 0.000 0.000 4 <Class::Dir>#mkdir
|
21
|
+
0.00 0.000 0.000 0.000 0.000 130 Kernel#respond_to?
|
22
|
+
0.00 0.000 0.000 0.000 0.000 5 IO#write
|
23
|
+
0.00 0.000 0.000 0.000 0.000 50 Module#define_method
|
24
|
+
0.00 0.000 0.000 0.000 0.000 133 <Module::Gem>#suffixes
|
25
|
+
0.00 0.000 0.000 0.000 0.000 1 Kernel#exit
|
26
|
+
0.00 0.000 0.000 0.000 0.000 170 Class#inherited
|
27
|
+
0.00 0.000 0.000 0.000 0.000 194 BasicObject#singleton_method_added
|
28
|
+
0.00 0.000 0.000 0.000 0.000 49 <Module::Gem>#unresolved_deps
|
29
|
+
0.00 0.000 0.000 0.000 0.000 24 Class#initialize
|
30
|
+
0.00 0.000 0.000 0.000 0.000 10 Module#instance_methods
|
31
|
+
0.00 0.000 0.000 0.000 0.000 17 Module#attr_accessor
|
32
|
+
0.00 0.001 0.000 0.000 0.001 23 Module#class_eval
|
33
|
+
0.00 27.451 0.000 0.000 27.451 2 Global#[No method]
|
34
|
+
0.00 27.400 0.000 27.399 0.001 1 IO#each
|
35
|
+
0.00 0.000 0.000 0.000 0.000 26 OptionParser::List#search
|
36
|
+
0.00 0.002 0.000 0.000 0.002 60 *Class#new
|
37
|
+
0.00 0.000 0.000 0.000 0.000 130 Kernel#respond_to_missing?
|
38
|
+
0.00 0.000 0.000 0.000 0.000 29 Module#const_set
|
39
|
+
0.00 0.000 0.000 0.000 0.000 11 OptionParser#visit
|
40
|
+
0.00 0.000 0.000 0.000 0.000 30 Regexp#===
|
41
|
+
0.00 0.000 0.000 0.000 0.000 1 File#initialize
|
42
|
+
0.00 0.000 0.000 0.000 0.000 11 Array#reverse_each
|
43
|
+
0.00 0.000 0.000 0.000 0.000 53 Hash#empty?
|
44
|
+
0.00 0.000 0.000 0.000 0.000 1 Thread#raise
|
45
|
+
0.00 0.000 0.000 0.000 0.000 26 Hash#fetch
|
46
|
+
0.00 0.000 0.000 0.000 0.000 4 FileUtils#mkdir_p
|
47
|
+
0.00 0.000 0.000 0.000 0.000 11 Regexp#to_s
|
48
|
+
0.00 0.000 0.000 0.000 0.000 5 <Class::File>#exist?
|
49
|
+
0.00 0.000 0.000 0.000 0.000 10 Array#map
|
50
|
+
0.00 0.000 0.000 0.000 0.000 11 String#split
|
51
|
+
0.00 0.000 0.000 0.000 0.000 17 Module#include
|
52
|
+
0.00 0.000 0.000 0.000 0.000 1 Thread#initialize
|
53
|
+
0.00 0.000 0.000 0.000 0.000 9 OptionParser#search
|
54
|
+
0.00 0.000 0.000 0.000 0.000 10 <Module::JSON>#deep_const_get
|
55
|
+
0.00 0.000 0.000 0.000 0.000 26 <Class::BasicObject>#allocate
|
56
|
+
0.00 0.000 0.000 0.000 0.000 36 Module#===
|
57
|
+
0.00 0.000 0.000 0.000 0.000 1 IPSocket#addr
|
58
|
+
0.00 0.000 0.000 0.000 0.000 3 Exception#initialize
|
59
|
+
0.00 0.001 0.000 0.000 0.001 1 Kernel#catch
|
60
|
+
0.00 0.000 0.000 0.000 0.000 6 Module#attr_reader
|
61
|
+
0.00 0.000 0.000 0.000 0.000 24 <Class::Class>#allocate
|
62
|
+
0.00 0.000 0.000 0.000 0.000 2 OptionParser#make_switch
|
63
|
+
0.00 0.000 0.000 0.000 0.000 6 OptionParser::Switch#initialize
|
64
|
+
0.00 0.001 0.000 0.000 0.001 1 DpStmMap::Manager#stop
|
65
|
+
0.00 0.000 0.000 0.000 0.000 1 DpStmMap::TransactionLog#initialize
|
66
|
+
0.00 0.000 0.000 0.000 0.000 8 Proc#call
|
67
|
+
0.00 0.000 0.000 0.000 0.000 17 Module#append_features
|
68
|
+
0.00 0.001 0.000 0.000 0.001 1 DpStmMap::Manager#initialize
|
69
|
+
0.00 0.001 0.000 0.000 0.001 1 OptionParser#initialize
|
70
|
+
0.00 0.000 0.000 0.000 0.000 2 OptionParser::Switch#parse_arg
|
71
|
+
0.00 0.000 0.000 0.000 0.000 1 IO#close
|
72
|
+
0.00 0.000 0.000 0.000 0.000 30 Kernel#hash
|
73
|
+
0.00 0.000 0.000 0.000 0.000 4 FileUtils#fu_check_options
|
74
|
+
0.00 0.000 0.000 0.000 0.000 11 <Module::JSON>#const_defined_in?
|
75
|
+
0.00 0.001 0.000 0.000 0.001 1 <Module::JSON>#generator=
|
76
|
+
0.00 0.000 0.000 0.000 0.000 4 FileUtils#fu_mkdir
|
77
|
+
0.00 0.000 0.000 0.000 0.000 4 Array#select
|
78
|
+
0.00 0.000 0.000 0.000 0.000 1 <Class::Thread>#new
|
79
|
+
0.00 0.000 0.000 0.000 0.000 11 Module#const_defined?
|
80
|
+
0.00 0.000 0.000 0.000 0.000 2 IO#puts
|
81
|
+
0.00 0.000 0.000 0.000 0.000 4 Kernel#dup
|
82
|
+
0.00 0.000 0.000 0.000 0.000 1 Hash#each
|
83
|
+
0.00 0.000 0.000 0.000 0.000 3 String#%
|
84
|
+
0.00 0.000 0.000 0.000 0.000 10 Enumerable#inject
|
85
|
+
0.00 0.000 0.000 0.000 0.000 20 Module#const_get
|
86
|
+
0.00 0.001 0.000 0.000 0.000 2 OptionParser::Switch::RequiredArgument#parse
|
87
|
+
0.00 0.000 0.000 0.000 0.000 1 OpenSSL::X509::Store#initialize
|
88
|
+
0.00 0.000 0.000 0.000 0.000 2 ThreadSafeLru::DoubleLinkedList#initialize
|
89
|
+
0.00 0.000 0.000 0.000 0.000 4 FileUtils#fu_list
|
90
|
+
0.00 0.000 0.000 0.000 0.000 3 JSON::Ext::Generator::State#initialize
|
91
|
+
0.00 0.000 0.000 0.000 0.000 12 Kernel#===
|
92
|
+
0.00 0.000 0.000 0.000 0.000 16 Kernel#block_given?
|
93
|
+
0.00 0.000 0.000 0.000 0.000 7 Module#module_function
|
94
|
+
0.00 0.000 0.000 0.000 0.000 2 <Class::OptionParser::Switch>#guess
|
95
|
+
0.00 0.048 0.000 0.000 0.048 48 *Kernel#require
|
96
|
+
0.00 0.000 0.000 0.000 0.000 2 OptionParser::List#update
|
97
|
+
0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#activate
|
98
|
+
0.00 0.000 0.000 0.000 0.000 12 Module#private
|
99
|
+
0.00 0.000 0.000 0.000 0.000 2 ThreadSafeLru::LruCache#initialize
|
100
|
+
0.00 0.000 0.000 0.000 0.000 2 Kernel#puts
|
101
|
+
0.00 0.000 0.000 0.000 0.000 1 <Class::OpenSSL::X509::Store>#allocate
|
102
|
+
0.00 0.000 0.000 0.000 0.000 2 OptionParser::List#initialize
|
103
|
+
0.00 0.000 0.000 0.000 0.000 13 Hash#delete
|
104
|
+
0.00 0.000 0.000 0.000 0.000 4 Array#flatten
|
105
|
+
0.00 0.000 0.000 0.000 0.000 8 String#chomp
|
106
|
+
0.00 0.000 0.000 0.000 0.000 4 ThreadSafeLru::ListNode#initialize
|
107
|
+
0.00 0.000 0.000 0.000 0.000 1 <Class::Exception>#exception
|
108
|
+
0.00 0.000 0.000 0.000 0.000 2 OptionParser#define
|
109
|
+
0.00 0.000 0.000 0.000 0.000 1 <Class::IO>#open
|
110
|
+
0.00 0.000 0.000 0.000 0.000 16 Module#included
|
111
|
+
0.00 0.000 0.000 0.000 0.000 2 IO#flush
|
112
|
+
0.00 0.000 0.000 0.000 0.000 1 DpStmMap::Manager#start
|
113
|
+
0.00 0.000 0.000 0.000 0.000 4 Gem::Specification#runtime_dependencies
|
114
|
+
0.00 0.000 0.000 0.000 0.000 1 DpStmMap::ReferenceCounts#initialize
|
115
|
+
0.00 0.000 0.000 0.000 0.000 3 OptionParser#notwice
|
116
|
+
0.00 0.000 0.000 0.000 0.000 2 OptionParser::List#append
|
117
|
+
0.00 0.000 0.000 0.000 0.000 7 Hash#[]=
|
118
|
+
0.00 0.001 0.000 0.000 0.001 1 OptionParser#permute!
|
119
|
+
0.00 0.000 0.000 0.000 0.000 8 Gem::Dependency#type
|
120
|
+
0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#raise_if_conflicts
|
121
|
+
0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#add_self_to_load_path
|
122
|
+
0.00 0.000 0.000 0.000 0.000 4 Kernel#initialize_dup
|
123
|
+
0.00 0.000 0.000 0.000 0.000 12 Symbol#===
|
124
|
+
0.00 0.000 0.000 0.000 0.000 1 DpStmMap::Manager#port
|
125
|
+
0.00 0.000 0.000 0.000 0.000 8 <Class::Hash>#allocate
|
126
|
+
0.00 0.000 0.000 0.000 0.000 4 <Class::Proc>#new
|
127
|
+
0.00 0.000 0.000 0.000 0.000 2 OptionParser::Switch#conv_arg
|
128
|
+
0.00 0.000 0.000 0.000 0.000 12 BasicObject#==
|
129
|
+
0.00 0.000 0.000 0.000 0.000 4 Kernel#method
|
130
|
+
0.00 0.000 0.000 0.000 0.000 1 DpStmMap::CurrentValues#initialize
|
131
|
+
0.00 0.000 0.000 0.000 0.000 2 Exception#set_backtrace
|
132
|
+
0.00 0.000 0.000 0.000 0.000 1 OptionParser#banner
|
133
|
+
0.00 0.000 0.000 0.000 0.000 1 Array#[]=
|
134
|
+
0.00 0.001 0.000 0.000 0.001 1 OptionParser#parse_in_order
|
135
|
+
0.00 0.000 0.000 0.000 0.000 3 OptionParser::List#add_banner
|
136
|
+
0.00 0.004 0.000 0.000 0.004 1 <Module::Gem>#try_activate
|
137
|
+
0.00 0.000 0.000 0.000 0.000 4 Hash#invert
|
138
|
+
0.00 0.000 0.000 0.000 0.000 3 Exception#exception
|
139
|
+
0.00 0.000 0.000 0.000 0.000 4 Hash#keys
|
140
|
+
0.00 0.000 0.000 0.000 0.000 3 Exception#backtrace
|
141
|
+
0.00 0.000 0.000 0.000 0.000 4 <Class::File>#path
|
142
|
+
0.00 0.000 0.000 0.000 0.000 1 OpenSSL::X509::Store#flags=
|
143
|
+
0.00 0.000 0.000 0.000 0.000 4 <Class::Mutex>#allocate
|
144
|
+
0.00 0.000 0.000 0.000 0.000 2 OptionParser#on
|
145
|
+
0.00 0.000 0.000 0.000 0.000 10 String#empty?
|
146
|
+
0.00 0.000 0.000 0.000 0.000 1 Module#constants
|
147
|
+
0.00 0.000 0.000 0.000 0.000 1 SystemExit#initialize
|
148
|
+
0.00 0.000 0.000 0.000 0.000 5 Array#shift
|
149
|
+
0.00 0.000 0.000 0.000 0.000 7 Array#empty?
|
150
|
+
0.00 0.000 0.000 0.000 0.000 3 Method#to_proc
|
151
|
+
0.00 0.000 0.000 0.000 0.000 2 Array#delete_if
|
152
|
+
0.00 0.000 0.000 0.000 0.000 4 Array#push
|
153
|
+
0.00 0.000 0.000 0.000 0.000 1 <Module::JSON>#parser=
|
154
|
+
0.00 0.000 0.000 0.000 0.000 1 <Class::Gem::Specification>#_all
|
155
|
+
0.00 0.000 0.000 0.000 0.000 5 String#==
|
156
|
+
0.00 0.000 0.000 0.000 0.000 2 <Class::IO>#allocate
|
157
|
+
0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#activate_dependencies
|
158
|
+
0.00 0.000 0.000 0.000 0.000 1 <Class::IO>#new
|
159
|
+
0.00 0.001 0.000 0.000 0.001 1 OptionParser#parse!
|
160
|
+
0.00 0.000 0.000 0.000 0.000 4 Gem::Specification#dependencies
|
161
|
+
0.00 0.000 0.000 0.000 0.000 1 <Module::Gem>#load_path_insert_index
|
162
|
+
0.00 0.000 0.000 0.000 0.000 8 Symbol#==
|
163
|
+
0.00 0.004 0.000 0.000 0.004 1 <Class::Gem::Specification>#each
|
164
|
+
0.00 0.000 0.000 0.000 0.000 4 Hash#initialize_copy
|
165
|
+
0.00 0.000 0.000 0.000 0.000 1 <Object::Object>#include?
|
166
|
+
0.00 0.000 0.000 0.000 0.000 3 <Class::JSON::Ext::Generator::State>#allocate
|
167
|
+
0.00 0.000 0.000 0.000 0.000 1 <Class::Range>#allocate
|
168
|
+
0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#conflicts
|
169
|
+
0.00 0.000 0.000 0.000 0.000 1 <Class::File>#basename
|
170
|
+
0.00 0.000 0.000 0.000 0.000 3 Enumerable#find_all
|
171
|
+
0.00 0.000 0.000 0.000 0.000 1 Array#index
|
172
|
+
0.00 0.000 0.000 0.000 0.000 2 OptionParser#top
|
173
|
+
0.00 0.000 0.000 0.000 0.000 4 Mutex#initialize
|
174
|
+
0.00 0.000 0.000 0.000 0.000 3 Kernel#lambda
|
175
|
+
0.00 0.000 0.000 0.000 0.000 1 OptionParser#add_officious
|
176
|
+
0.00 0.000 0.000 0.000 0.000 1 <Class::File>#join
|
177
|
+
0.00 0.000 0.000 0.000 0.000 4 Hash#[]
|
178
|
+
0.00 0.000 0.000 0.000 0.000 1 ConditionVariable#initialize
|
179
|
+
0.00 0.000 0.000 0.000 0.000 1 OptionParser#program_name
|
180
|
+
0.00 0.000 0.000 0.000 0.000 2 String#rindex
|
181
|
+
0.00 0.000 0.000 0.000 0.000 4 Hash#initialize
|
182
|
+
0.00 0.000 0.000 0.000 0.000 1 DpStmMap::ClientTransactionManager#initialize
|
183
|
+
0.00 0.000 0.000 0.000 0.000 2 MatchData#to_a
|
184
|
+
0.00 0.000 0.000 0.000 0.000 4 Hash#key?
|
185
|
+
0.00 0.000 0.000 0.000 0.000 1 String#start_with?
|
186
|
+
0.00 0.004 0.000 0.000 0.004 1 Enumerable#find
|
187
|
+
0.00 0.000 0.000 0.000 0.000 3 String#to_i
|
188
|
+
0.00 0.000 0.000 0.000 0.000 1 Kernel#Integer
|
189
|
+
0.00 0.000 0.000 0.000 0.000 1 Module#extend_object
|
190
|
+
0.00 0.000 0.000 0.000 0.000 2 Exception#message
|
191
|
+
0.00 0.000 0.000 0.000 0.000 1 Kernel#extend
|
192
|
+
0.00 0.004 0.000 0.000 0.004 1 <Class::Gem::Specification>#find_by_path
|
193
|
+
0.00 0.000 0.000 0.000 0.000 4 BasicObject#initialize
|
194
|
+
0.00 0.000 0.000 0.000 0.000 1 <Module::JSON::Ext::Generator::GeneratorMethods::String>#included
|
195
|
+
0.00 0.000 0.000 0.000 0.000 1 Hash#values
|
196
|
+
0.00 0.001 0.000 0.000 0.001 1 OptionParser#order!
|
197
|
+
0.00 0.000 0.000 0.000 0.000 2 Float#/
|
198
|
+
0.00 0.000 0.000 0.000 0.000 2 Module#>=
|
199
|
+
0.00 0.000 0.000 0.000 0.000 1 Array#insert
|
200
|
+
0.00 0.000 0.000 0.000 0.000 1 OptionParser#base
|
201
|
+
0.00 0.000 0.000 0.000 0.000 1 Fixnum#to_s
|
202
|
+
0.00 0.000 0.000 0.000 0.000 2 Exception#to_s
|
203
|
+
0.00 0.000 0.000 0.000 0.000 2 Module#public
|
204
|
+
0.00 0.000 0.000 0.000 0.000 2 Hash#update
|
205
|
+
0.00 0.000 0.000 0.000 0.000 1 String#*
|
206
|
+
0.00 0.000 0.000 0.000 0.000 1 Method#arity
|
207
|
+
0.00 0.000 0.000 0.000 0.000 2 String#===
|
208
|
+
0.00 0.000 0.000 0.000 0.000 1 Module#method_defined?
|
209
|
+
0.00 0.000 0.000 0.000 0.000 2 <Class::OptionParser::Switch::NoArgument>#incompatible_argument_styles
|
210
|
+
0.00 0.000 0.000 0.000 0.000 1 Module#protected
|
211
|
+
0.00 0.000 0.000 0.000 0.000 1 Float#-@
|
212
|
+
0.00 0.000 0.000 0.000 0.000 1 String#end_with?
|
213
|
+
0.00 0.000 0.000 0.000 0.000 1 Module#extended
|
214
|
+
|
215
|
+
* indicates recursively called methods
|
216
|
+
Thread ID: 7748740
|
217
|
+
Fiber ID: 7760740
|
218
|
+
Total: 27.400595
|
219
|
+
Sort by: self_time
|
220
|
+
|
221
|
+
%self total self wait child calls name
|
222
|
+
0.00 27.399 0.000 27.399 0.000 3 TCPServer#accept
|
223
|
+
0.00 27.401 0.000 0.001 27.399 1 DpStmMap::Manager#start
|
224
|
+
0.00 0.000 0.000 0.000 0.000 2 Thread#initialize
|
225
|
+
0.00 0.000 0.000 0.000 0.000 2 <Class::Thread>#new
|
226
|
+
0.00 27.399 0.000 0.000 27.399 1 Kernel#loop
|
227
|
+
0.00 0.000 0.000 0.000 0.000 2 BasicSocket#setsockopt
|
228
|
+
0.00 0.000 0.000 0.000 0.000 1 IO#close
|
229
|
+
0.00 0.000 0.000 0.000 0.000 2 <Class::IO>#allocate
|
230
|
+
0.00 0.000 0.000 0.000 0.000 1 Array#each
|
231
|
+
0.00 0.000 0.000 0.000 0.000 1 Exception#exception
|
232
|
+
0.00 0.000 0.000 0.000 0.000 1 Exception#set_backtrace
|
233
|
+
0.00 0.000 0.000 0.000 0.000 2 Thread#join
|
234
|
+
0.00 0.000 0.000 0.000 0.000 2 Thread#raise
|
235
|
+
0.00 0.000 0.000 0.000 0.000 1 Exception#backtrace
|
236
|
+
0.00 0.000 0.000 0.000 0.000 1 IO#closed?
|
237
|
+
0.00 0.000 0.000 0.000 0.000 1 Module#===
|
238
|
+
|
239
|
+
* indicates recursively called methods
|
240
|
+
Thread ID: 7760640
|
241
|
+
Fiber ID: 7760040
|
242
|
+
Total: 27.400287
|
243
|
+
Sort by: self_time
|
244
|
+
|
245
|
+
%self total self wait child calls name
|
246
|
+
8.53 3.984 2.338 1.646 0.000 40004 File#initialize
|
247
|
+
4.81 1.991 1.317 0.653 0.021 60008 IO#write
|
248
|
+
4.78 1.531 1.310 0.000 0.221 10001 JSON::Ext::Generator::GeneratorMethods::Array#to_json
|
249
|
+
3.48 1.221 0.955 0.266 0.000 40005 IO#close
|
250
|
+
3.06 0.839 0.839 0.000 0.000 10002 JSON::Ext::Parser#parse
|
251
|
+
2.24 7.393 0.613 6.780 0.000 20005 IO#read
|
252
|
+
1.85 2.259 0.508 1.751 0.000 60006 Mutex#lock
|
253
|
+
1.83 8.267 0.503 0.000 7.764 40004 <Class::IO>#open
|
254
|
+
1.55 0.424 0.424 0.000 0.000 30003 <Class::File>#exist?
|
255
|
+
1.42 7.058 0.389 0.000 6.669 30004 Hash#each
|
256
|
+
1.31 17.413 0.358 0.000 17.055 60006 *Mutex#synchronize
|
257
|
+
1.22 1.633 0.334 0.000 1.299 100016 *Class#new
|
258
|
+
0.98 9.853 0.268 0.001 9.584 10003 DpStmMap::SocketTransport#next_message
|
259
|
+
0.81 0.396 0.223 0.000 0.174 10002 JSON::Ext::Parser#initialize
|
260
|
+
0.75 2.092 0.204 0.000 1.888 10002 DpStmMap::SocketTransport#send_message
|
261
|
+
0.71 0.354 0.195 0.000 0.158 40006 Array#each
|
262
|
+
0.64 2.132 0.175 0.000 1.957 10002 <Class::DpStmMap::JsonMessage>#deserialize
|
263
|
+
0.63 0.172 0.172 0.000 0.000 90011 String#encode
|
264
|
+
0.63 0.411 0.172 0.000 0.239 10002 JSON::Ext::Generator::GeneratorMethods::Hash#to_json
|
265
|
+
0.60 12.550 0.163 0.000 12.387 10001 DpStmMap::ClientTransactionManager#apply_transaction
|
266
|
+
0.56 0.154 0.154 0.000 0.000 70008 Hash#[]=
|
267
|
+
0.55 0.152 0.152 0.000 0.000 90018 Hash#key?
|
268
|
+
0.54 0.519 0.148 0.000 0.371 20002 Set#initialize
|
269
|
+
0.47 0.535 0.130 0.000 0.405 10001 ThreadSafeLru::LruCache#get_node
|
270
|
+
0.47 0.788 0.128 0.000 0.660 10002 DpStmMap::JsonMessage#serialize
|
271
|
+
0.41 0.112 0.112 0.000 0.000 30003 DpStmMap::ReferenceCounts#file_name
|
272
|
+
0.39 0.258 0.107 0.000 0.151 30004 Kernel#dup
|
273
|
+
0.39 0.107 0.107 0.000 0.000 60006 Mutex#unlock
|
274
|
+
0.32 27.399 0.088 0.002 27.310 1 Kernel#loop
|
275
|
+
0.32 1.337 0.087 0.000 1.250 10001 DpStmMap::ReferenceCounts#add_reference
|
276
|
+
0.31 1.462 0.085 0.000 1.377 10002 JSON#parse
|
277
|
+
0.30 3.684 0.081 0.000 3.603 10001 DpStmMap::CurrentValues#[]=
|
278
|
+
0.30 0.197 0.081 0.000 0.116 10001 Set#merge
|
279
|
+
0.28 0.078 0.078 0.000 0.000 20002 DpStmMap::CurrentValues#file_name
|
280
|
+
0.28 0.077 0.077 0.000 0.000 60011 <Class::BasicObject>#allocate
|
281
|
+
0.27 0.363 0.074 0.000 0.288 10001 ConditionVariable#broadcast
|
282
|
+
0.26 0.071 0.071 0.000 0.000 40005 Hash#keys
|
283
|
+
0.25 0.067 0.067 0.000 0.000 10001 ThreadSafeLru::ListNode#remove
|
284
|
+
0.23 0.103 0.063 0.000 0.040 30004 Kernel#initialize_dup
|
285
|
+
0.22 0.237 0.062 0.000 0.175 10001 DpStmMap::ReferenceCounts#has_references?
|
286
|
+
0.22 0.119 0.061 0.000 0.058 10001 ThreadSafeLru::Node#initialize
|
287
|
+
0.22 0.061 0.061 0.000 0.000 30003 Fixnum#to_s
|
288
|
+
0.22 0.061 0.061 0.000 0.000 20002 Hash#initialize
|
289
|
+
0.22 0.060 0.060 0.000 0.000 10002 String#unpack
|
290
|
+
0.22 2.886 0.059 0.000 2.827 10001 DpStmMap::TransactionLog#write_tx
|
291
|
+
0.21 0.112 0.059 0.000 0.053 10001 Set#each
|
292
|
+
0.21 0.059 0.059 0.000 0.000 10001 ThreadSafeLru::ListNode#insert_between
|
293
|
+
0.21 0.181 0.058 0.000 0.122 10001 ThreadSafeLru::DoubleLinkedList#add_to_head
|
294
|
+
0.21 1.197 0.058 0.000 1.138 10001 ThreadSafeLru::LruCache#get
|
295
|
+
0.19 0.324 0.053 0.000 0.271 10001 Proc#call
|
296
|
+
0.19 0.053 0.053 0.000 0.000 20003 Hash#delete
|
297
|
+
0.19 0.052 0.052 0.000 0.000 10002 <Class::JSON::Ext::Parser>#allocate
|
298
|
+
0.18 0.049 0.049 0.000 0.000 20005 Module#===
|
299
|
+
0.18 0.048 0.048 0.000 0.000 30004 Kernel#instance_variable_set
|
300
|
+
0.17 0.074 0.048 0.000 0.026 10001 DpStmMap::ClientTransactionSuccessfulMessage#initialize
|
301
|
+
0.17 0.095 0.047 0.000 0.049 10001 Set#do_with_enum
|
302
|
+
0.17 0.047 0.047 0.000 0.000 40004 <Class::IO>#allocate
|
303
|
+
0.17 1.242 0.046 0.000 1.197 10001 DpStmMap::CurrentValues#[]
|
304
|
+
0.16 0.045 0.045 0.000 0.000 20004 Module#const_get
|
305
|
+
0.16 17.457 0.044 0.000 17.413 10001 DpStmMap::ClientHandler#handle
|
306
|
+
0.16 0.043 0.043 0.000 0.000 10001 Hash#each_key
|
307
|
+
0.15 0.218 0.041 0.000 0.176 10002 <Class::DpStmMap::JsonMessage>#class_from_string
|
308
|
+
0.15 0.041 0.041 0.000 0.000 10002 String#split
|
309
|
+
0.15 0.041 0.041 0.000 0.000 10001 DpStmMap::ClientTransactionMessage#initialize
|
310
|
+
0.14 0.038 0.038 0.000 0.000 20002 Hash#has_key?
|
311
|
+
0.14 0.149 0.037 0.000 0.112 10001 Enumerable#select
|
312
|
+
0.14 0.054 0.037 0.000 0.017 10001 Set#add
|
313
|
+
0.13 0.036 0.036 0.000 0.000 3244 Thread#run
|
314
|
+
0.13 0.035 0.035 0.000 0.000 20003 <Class::JSON::Ext::Generator::State>#allocate
|
315
|
+
0.12 0.273 0.034 0.000 0.239 10001 ThreadSafeLru::LruCache#drop
|
316
|
+
0.12 0.032 0.032 0.000 0.000 10002 Array#pack
|
317
|
+
0.12 0.032 0.032 0.000 0.000 30004 String#to_s
|
318
|
+
0.12 4.605 0.032 0.000 4.573 10001 DpStmMap::TransactionLog#store_transaction
|
319
|
+
0.11 0.436 0.030 0.000 0.406 10001 Enumerable#to_set
|
320
|
+
0.11 0.030 0.030 0.000 0.000 10002 Kernel#instance_variables
|
321
|
+
0.10 0.043 0.028 0.000 0.015 10001 Set#to_a
|
322
|
+
0.10 0.493 0.028 0.000 0.465 10001 ThreadSafeLru::Node#get_value
|
323
|
+
0.10 0.028 0.028 0.000 0.000 20002 Kernel#instance_variable_get
|
324
|
+
0.10 0.136 0.028 0.000 0.108 10002 Enumerable#inject
|
325
|
+
0.10 0.163 0.027 0.000 0.136 10002 DpStmMap::JsonMessage#from_hash!
|
326
|
+
0.10 0.027 0.027 0.000 0.000 20002 Symbol#to_s
|
327
|
+
0.10 0.026 0.026 0.000 0.000 10001 DpStmMap::ClientTransactionOutcomeMessage#initialize
|
328
|
+
0.09 0.025 0.025 0.000 0.000 20003 JSON::Ext::Generator::State#initialize_copy
|
329
|
+
0.09 0.024 0.024 0.000 0.000 10002 IO#flush
|
330
|
+
0.09 0.024 0.024 0.000 0.000 20002 <Class::Hash>#allocate
|
331
|
+
0.09 0.023 0.023 0.000 0.000 20003 Kernel#class
|
332
|
+
0.08 0.034 0.022 0.000 0.011 10001 Enumerable#each_entry
|
333
|
+
0.08 0.022 0.022 0.000 0.000 10002 String#encoding
|
334
|
+
0.07 0.020 0.020 0.000 0.000 10001 ThreadSafeLru::ListNode#initialize
|
335
|
+
0.07 0.020 0.020 0.000 0.000 10001 ThreadSafeLru::LruCache#size
|
336
|
+
0.07 0.019 0.019 0.000 0.000 10002 <Class::Mutex>#allocate
|
337
|
+
0.06 0.018 0.018 0.000 0.000 10002 Module#name
|
338
|
+
0.06 0.017 0.017 0.000 0.000 10001 DpStmMap::TransactionLog#last_id
|
339
|
+
0.06 0.015 0.015 0.000 0.000 10001 Array#initialize_copy
|
340
|
+
0.05 0.015 0.015 0.000 0.000 10001 Kernel#respond_to?
|
341
|
+
0.05 0.013 0.013 0.000 0.000 10001 <Class::Array>#allocate
|
342
|
+
0.04 0.012 0.012 0.000 0.000 10001 NilClass#nil?
|
343
|
+
0.04 0.011 0.011 0.000 0.000 10002 String#bytesize
|
344
|
+
0.04 0.011 0.011 0.000 0.000 10001 Kernel#nil?
|
345
|
+
0.04 0.011 0.011 0.000 0.000 10001 Array#clear
|
346
|
+
0.04 0.011 0.011 0.000 0.000 10001 Kernel#block_given?
|
347
|
+
0.04 0.010 0.010 0.000 0.000 10002 Mutex#initialize
|
348
|
+
0.04 0.010 0.010 0.000 0.000 10001 Kernel#instance_of?
|
349
|
+
0.00 0.000 0.000 0.000 0.000 1 BasicObject#method_missing
|
350
|
+
0.00 27.400 0.000 0.000 27.400 1 DpStmMap::Manager#start
|
351
|
+
0.00 0.000 0.000 0.000 0.000 1 Thread#initialize
|
352
|
+
0.00 0.000 0.000 0.000 0.000 1 <Class::Thread>#new
|
353
|
+
0.00 0.000 0.000 0.000 0.000 1 Exception#initialize
|
354
|
+
0.00 0.000 0.000 0.000 0.000 1 DpStmMap::ClientHandler#initialize
|
355
|
+
0.00 0.000 0.000 0.000 0.000 1 NameError#initialize
|
356
|
+
0.00 0.000 0.000 0.000 0.000 1 NoMethodError#initialize
|
357
|
+
0.00 0.000 0.000 0.000 0.000 1 DpStmMap::TransactionLog#add_listener
|
358
|
+
0.00 0.000 0.000 0.000 0.000 1 DpStmMap::ClientHelloMessage#initialize
|
359
|
+
0.00 0.000 0.000 0.000 0.000 1 Exception#exception
|
360
|
+
0.00 0.000 0.000 0.000 0.000 1 DpStmMap::SocketTransport#initialize
|
361
|
+
0.00 0.000 0.000 0.000 0.000 1 Exception#set_backtrace
|
362
|
+
0.00 0.000 0.000 0.000 0.000 1 BasicObject#initialize
|
363
|
+
0.00 0.000 0.000 0.000 0.000 1 Exception#backtrace
|
364
|
+
|
365
|
+
* indicates recursively called methods
|
366
|
+
Thread ID: 7765200
|
367
|
+
Fiber ID: 7764540
|
368
|
+
Total: 27.399141
|
369
|
+
Sort by: self_time
|
370
|
+
|
371
|
+
%self total self wait child calls name
|
372
|
+
3.61 1.394 0.989 0.000 0.405 10001 JSON::Ext::Generator::GeneratorMethods::Hash#to_json
|
373
|
+
2.96 0.811 0.811 0.000 0.000 10001 JSON::Ext::Parser#parse
|
374
|
+
2.38 2.920 0.653 2.267 0.000 20002 IO#write
|
375
|
+
1.75 1.365 0.479 0.886 0.000 10001 IO#read
|
376
|
+
1.70 27.119 0.466 0.000 26.653 26492 *Mutex#synchronize
|
377
|
+
1.15 2.097 0.316 1.781 0.000 10001 File#initialize
|
378
|
+
1.02 3.877 0.279 0.001 3.598 10001 <Class::IO>#open
|
379
|
+
0.93 7.470 0.254 7.216 0.000 26492 Mutex#lock
|
380
|
+
0.82 0.224 0.224 0.000 0.000 110011 String#encode
|
381
|
+
0.71 5.110 0.195 0.000 4.915 10001 DpStmMap::SocketTransport#send_message
|
382
|
+
0.69 0.380 0.190 0.000 0.190 10001 JSON::Ext::Parser#initialize
|
383
|
+
0.58 0.297 0.160 0.000 0.137 10001 Array#each
|
384
|
+
0.54 1.940 0.147 0.000 1.793 10001 DpStmMap::JsonMessage#serialize
|
385
|
+
0.50 0.137 0.137 0.000 0.000 10001 <Class::JSON::Ext::Parser>#allocate
|
386
|
+
0.47 5.519 0.130 0.000 5.389 10001 DpStmMap::TransactionLog#read_tx
|
387
|
+
0.47 0.129 0.129 0.000 0.000 90009 Hash#key?
|
388
|
+
0.44 0.120 0.120 0.000 0.000 10001 IO#close
|
389
|
+
0.44 27.399 0.120 0.000 27.280 1 Kernel#loop
|
390
|
+
0.42 0.705 0.115 0.000 0.589 20002 Class#new
|
391
|
+
0.39 0.107 0.107 0.000 0.000 50005 Hash#[]=
|
392
|
+
0.31 1.487 0.085 0.000 1.402 10001 JSON#parse
|
393
|
+
0.29 8.206 0.078 8.128 0.000 3245 Mutex#sleep
|
394
|
+
0.26 0.072 0.072 0.000 0.000 26491 Mutex#unlock
|
395
|
+
0.25 8.434 0.070 0.000 8.365 3245 ConditionVariable#wait
|
396
|
+
0.22 0.059 0.059 0.000 0.000 10001 DpStmMap::TransactionMessage#initialize
|
397
|
+
0.21 0.057 0.057 0.000 0.000 40004 Symbol#to_s
|
398
|
+
0.19 0.053 0.053 0.000 0.000 30003 Hash#keys
|
399
|
+
0.19 0.052 0.052 0.000 0.000 40004 Kernel#instance_variable_get
|
400
|
+
0.19 0.051 0.051 0.000 0.000 10001 Kernel#instance_variables
|
401
|
+
0.17 12.920 0.046 0.000 12.874 10001 DpStmMap::ClientHandler#handle
|
402
|
+
0.15 0.040 0.040 0.000 0.000 20002 Module#===
|
403
|
+
0.13 0.084 0.036 0.000 0.048 10001 Kernel#dup
|
404
|
+
0.13 0.035 0.035 0.000 0.000 13246 DpStmMap::TransactionLog#last_id
|
405
|
+
0.11 0.030 0.030 0.000 0.000 30003 String#to_s
|
406
|
+
0.10 0.026 0.026 0.000 0.000 10001 Array#pack
|
407
|
+
0.09 0.025 0.025 0.000 0.000 10001 Fixnum#to_s
|
408
|
+
0.07 0.033 0.020 0.000 0.012 10001 Kernel#initialize_dup
|
409
|
+
0.07 0.019 0.019 0.000 0.000 10001 String#encoding
|
410
|
+
0.06 0.018 0.018 0.000 0.000 10001 IO#flush
|
411
|
+
0.06 0.017 0.017 0.000 0.000 10001 Module#name
|
412
|
+
0.06 0.016 0.016 0.000 0.000 10001 <Class::IO>#allocate
|
413
|
+
0.05 0.015 0.015 0.000 0.000 10001 <Class::JSON::Ext::Generator::State>#allocate
|
414
|
+
0.05 0.012 0.012 0.000 0.000 10001 <Class::BasicObject>#allocate
|
415
|
+
0.05 0.012 0.012 0.000 0.000 10001 JSON::Ext::Generator::State#initialize_copy
|
416
|
+
0.04 0.012 0.012 0.000 0.000 10001 Kernel#class
|
417
|
+
0.04 0.011 0.011 0.000 0.000 6489 <Class::Thread>#current
|
418
|
+
0.04 0.011 0.011 0.000 0.000 10001 String#bytesize
|
419
|
+
0.04 0.010 0.010 0.000 0.000 3244 Array#delete
|
420
|
+
0.02 0.005 0.005 0.000 0.000 3245 Array#push
|
421
|
+
0.00 27.399 0.000 0.000 27.399 1 DpStmMap::TransactionLog#add_listener
|
422
|
+
|
423
|
+
* indicates recursively called methods
|
424
|
+
Thread ID: 6944240
|
425
|
+
Fiber ID: 6943940
|
426
|
+
Total: 3.979241
|
427
|
+
Sort by: self_time
|
428
|
+
|
429
|
+
%self total self wait child calls name
|
430
|
+
0.01 3.979 0.000 0.002 3.977 1 Kernel#loop
|
431
|
+
0.00 3.977 0.000 3.977 0.000 3 IO#read
|
432
|
+
0.00 0.000 0.000 0.000 0.000 1 BasicObject#method_missing
|
433
|
+
0.00 0.000 0.000 0.000 0.000 1 IO#close
|
434
|
+
0.00 0.000 0.000 0.000 0.000 2 IO#write
|
435
|
+
0.00 3.979 0.000 0.000 3.979 1 DpStmMap::Manager#start
|
436
|
+
0.00 0.000 0.000 0.000 0.000 1 <Class::Thread>#new
|
437
|
+
0.00 3.977 0.000 0.000 3.977 2 DpStmMap::SocketTransport#next_message
|
438
|
+
0.00 0.000 0.000 0.000 0.000 1 Thread#initialize
|
439
|
+
0.00 0.000 0.000 0.000 0.000 6 *Class#new
|
440
|
+
0.00 0.000 0.000 0.000 0.000 1 Exception#initialize
|
441
|
+
0.00 0.000 0.000 0.000 0.000 1 DpStmMap::SocketTransport#send_message
|
442
|
+
0.00 0.000 0.000 0.000 0.000 1 <Class::DpStmMap::JsonMessage>#deserialize
|
443
|
+
0.00 0.000 0.000 0.000 0.000 2 Array#each
|
444
|
+
0.00 0.000 0.000 0.000 0.000 1 DpStmMap::JsonMessage#serialize
|
445
|
+
0.00 0.000 0.000 0.000 0.000 1 JSON::Ext::Parser#initialize
|
446
|
+
0.00 0.000 0.000 0.000 0.000 1 JSON::Ext::Parser#parse
|
447
|
+
0.00 0.000 0.000 0.000 0.000 1 JSON::Ext::Generator::GeneratorMethods::Hash#to_json
|
448
|
+
0.00 0.000 0.000 0.000 0.000 1 NameError#initialize
|
449
|
+
0.00 0.000 0.000 0.000 0.000 1 JSON#parse
|
450
|
+
0.00 0.000 0.000 0.000 0.000 5 <Class::BasicObject>#allocate
|
451
|
+
0.00 0.000 0.000 0.000 0.000 1 Exception#backtrace
|
452
|
+
0.00 0.000 0.000 0.000 0.000 9 Hash#key?
|
453
|
+
0.00 0.000 0.000 0.000 0.000 1 String#unpack
|
454
|
+
0.00 0.000 0.000 0.000 0.000 1 NoMethodError#initialize
|
455
|
+
0.00 0.000 0.000 0.000 0.000 3 Module#===
|
456
|
+
0.00 0.000 0.000 0.000 0.000 2 Module#const_get
|
457
|
+
0.00 0.000 0.000 0.000 0.000 1 DpStmMap::ClientHandler#initialize
|
458
|
+
0.00 0.000 0.000 0.000 0.000 1 Exception#set_backtrace
|
459
|
+
0.00 0.000 0.000 0.000 0.000 1 DpStmMap::TransactionLog#add_listener
|
460
|
+
0.00 0.000 0.000 0.000 0.000 2 String#encode
|
461
|
+
0.00 0.000 0.000 0.000 0.000 1 DpStmMap::ClientHelloMessage#initialize
|
462
|
+
0.00 0.000 0.000 0.000 0.000 1 Kernel#dup
|
463
|
+
0.00 0.000 0.000 0.000 0.000 1 Hash#each
|
464
|
+
0.00 0.000 0.000 0.000 0.000 1 <Class::DpStmMap::JsonMessage>#class_from_string
|
465
|
+
0.00 0.000 0.000 0.000 0.000 1 String#split
|
466
|
+
0.00 0.000 0.000 0.000 0.000 1 IO#flush
|
467
|
+
0.00 0.000 0.000 0.000 0.000 1 DpStmMap::SocketTransport#initialize
|
468
|
+
0.00 0.000 0.000 0.000 0.000 1 Exception#exception
|
469
|
+
0.00 0.000 0.000 0.000 0.000 1 DpStmMap::JsonMessage#from_hash!
|
470
|
+
0.00 0.000 0.000 0.000 0.000 1 Hash#delete
|
471
|
+
0.00 0.000 0.000 0.000 0.000 1 Enumerable#inject
|
472
|
+
0.00 0.000 0.000 0.000 0.000 1 Kernel#instance_variable_set
|
473
|
+
0.00 0.000 0.000 0.000 0.000 1 <Class::JSON::Ext::Parser>#allocate
|
474
|
+
0.00 0.000 0.000 0.000 0.000 1 <Class::Mutex>#allocate
|
475
|
+
0.00 0.000 0.000 0.000 0.000 1 Array#pack
|
476
|
+
0.00 0.000 0.000 0.000 0.000 1 Kernel#initialize_dup
|
477
|
+
0.00 0.000 0.000 0.000 0.000 1 Hash#[]=
|
478
|
+
0.00 0.000 0.000 0.000 0.000 1 String#encoding
|
479
|
+
0.00 0.000 0.000 0.000 0.000 1 Module#name
|
480
|
+
0.00 0.000 0.000 0.000 0.000 1 Hash#keys
|
481
|
+
0.00 0.000 0.000 0.000 0.000 1 <Class::JSON::Ext::Generator::State>#allocate
|
482
|
+
0.00 0.000 0.000 0.000 0.000 1 String#bytesize
|
483
|
+
0.00 0.000 0.000 0.000 0.000 1 Kernel#instance_variables
|
484
|
+
0.00 0.000 0.000 0.000 0.000 1 JSON::Ext::Generator::State#initialize_copy
|
485
|
+
0.00 0.000 0.000 0.000 0.000 1 BasicObject#initialize
|
486
|
+
0.00 0.000 0.000 0.000 0.000 1 Kernel#class
|
487
|
+
0.00 0.000 0.000 0.000 0.000 1 Mutex#initialize
|
488
|
+
0.00 0.000 0.000 0.000 0.000 1 String#to_s
|
489
|
+
|
490
|
+
* indicates recursively called methods
|
491
|
+
Thread ID: 6940620
|
492
|
+
Fiber ID: 6940400
|
493
|
+
Total: 3.978802
|
494
|
+
Sort by: self_time
|
495
|
+
|
496
|
+
%self total self wait child calls name
|
497
|
+
31.73 1.557 1.262 0.000 0.295 10001 JSON::Ext::Generator::GeneratorMethods::Hash#to_json
|
498
|
+
12.09 0.481 0.481 0.000 0.000 10001 JSON::Ext::Parser#parse
|
499
|
+
8.52 0.339 0.339 0.000 0.000 20002 IO#write
|
500
|
+
4.91 3.814 0.195 0.000 3.619 20004 *Mutex#synchronize
|
501
|
+
3.78 0.150 0.150 0.000 0.000 110011 String#encode
|
502
|
+
3.07 0.122 0.122 0.000 0.000 10001 IO#read
|
503
|
+
2.58 0.179 0.103 0.000 0.076 10001 Array#each
|
504
|
+
2.51 2.359 0.100 0.000 2.260 10001 DpStmMap::SocketTransport#send_message
|
505
|
+
2.50 0.100 0.100 0.000 0.000 10001 File#initialize
|
506
|
+
2.50 0.198 0.099 0.000 0.098 10001 JSON::Ext::Parser#initialize
|
507
|
+
2.37 1.881 0.094 0.000 1.786 10001 DpStmMap::JsonMessage#serialize
|
508
|
+
1.77 0.340 0.070 0.000 0.269 10001 <Class::IO>#open
|
509
|
+
1.69 0.067 0.067 0.000 0.000 90009 Hash#key?
|
510
|
+
1.63 1.179 0.065 0.000 1.114 10001 DpStmMap::TransactionLog#read_tx
|
511
|
+
1.49 3.979 0.059 0.000 3.919 1 Kernel#loop
|
512
|
+
1.44 0.322 0.057 0.000 0.265 20002 Class#new
|
513
|
+
1.40 0.056 0.056 0.000 0.000 50005 Hash#[]=
|
514
|
+
1.10 0.044 0.044 0.000 0.000 10001 DpStmMap::TransactionMessage#initialize
|
515
|
+
1.05 0.042 0.042 0.000 0.000 40004 Symbol#to_s
|
516
|
+
0.97 0.760 0.039 0.000 0.721 10001 JSON#parse
|
517
|
+
0.96 0.038 0.038 0.000 0.000 10001 IO#close
|
518
|
+
0.94 0.037 0.037 0.000 0.000 30003 Hash#keys
|
519
|
+
0.84 0.034 0.034 0.000 0.000 40004 Kernel#instance_variable_get
|
520
|
+
0.68 0.062 0.027 0.000 0.036 10001 Kernel#dup
|
521
|
+
0.59 0.024 0.024 0.000 0.000 30003 String#to_s
|
522
|
+
0.58 2.522 0.023 0.000 2.499 10001 DpStmMap::ClientHandler#handle
|
523
|
+
0.53 0.021 0.021 0.000 0.000 20003 Mutex#unlock
|
524
|
+
0.52 0.021 0.021 0.000 0.000 20004 Mutex#lock
|
525
|
+
0.52 0.021 0.021 0.000 0.000 20002 Module#===
|
526
|
+
0.49 0.019 0.019 0.000 0.000 10001 Array#pack
|
527
|
+
0.45 0.018 0.018 0.000 0.000 10001 Kernel#instance_variables
|
528
|
+
0.40 0.016 0.016 0.000 0.000 10002 DpStmMap::TransactionLog#last_id
|
529
|
+
0.39 0.025 0.016 0.000 0.009 10001 Kernel#initialize_dup
|
530
|
+
0.38 0.015 0.015 0.000 0.000 10001 Fixnum#to_s
|
531
|
+
0.37 0.015 0.015 0.000 0.000 10001 <Class::JSON::Ext::Parser>#allocate
|
532
|
+
0.28 0.011 0.011 0.000 0.000 10001 IO#flush
|
533
|
+
0.28 0.011 0.011 0.000 0.000 10001 Module#name
|
534
|
+
0.27 0.011 0.011 0.000 0.000 10001 <Class::JSON::Ext::Generator::State>#allocate
|
535
|
+
0.26 0.010 0.010 0.000 0.000 10001 String#encoding
|
536
|
+
0.23 0.009 0.009 0.000 0.000 10001 String#bytesize
|
537
|
+
0.23 0.009 0.009 0.000 0.000 10001 JSON::Ext::Generator::State#initialize_copy
|
538
|
+
0.22 0.009 0.009 0.000 0.000 10001 <Class::IO>#allocate
|
539
|
+
0.22 0.009 0.009 0.000 0.000 10001 <Class::BasicObject>#allocate
|
540
|
+
0.22 0.009 0.009 0.000 0.000 10001 Kernel#class
|
541
|
+
0.01 0.002 0.000 0.002 0.000 1 Mutex#sleep
|
542
|
+
0.00 3.979 0.000 0.000 3.979 1 DpStmMap::TransactionLog#add_listener
|
543
|
+
0.00 0.002 0.000 0.000 0.002 1 ConditionVariable#wait
|
544
|
+
0.00 0.000 0.000 0.000 0.000 1 Array#push
|
545
|
+
0.00 0.000 0.000 0.000 0.000 1 <Class::Thread>#current
|
546
|
+
|
547
|
+
* indicates recursively called methods
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'dp_stm_map'
|
2
|
+
require 'timeout'
|
3
|
+
require 'tmpdir'
|
4
|
+
require 'fileutils'
|
5
|
+
require "xray/thread_dump_signal_handler"
|
6
|
+
|
7
|
+
module DpStmMap
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
describe ClientLocalStore do
|
12
|
+
|
13
|
+
|
14
|
+
before do
|
15
|
+
@storage_dir=Dir.mktmpdir
|
16
|
+
end
|
17
|
+
|
18
|
+
after do
|
19
|
+
FileUtils.rm_rf(@storage_dir)
|
20
|
+
end
|
21
|
+
|
22
|
+
subject {ClientLocalStore.new @storage_dir}
|
23
|
+
|
24
|
+
describe :update do
|
25
|
+
it "should store new value" do
|
26
|
+
subject.update(1,{'abc' => "value"}, {'x' => 'abc'}, [].to_set)
|
27
|
+
subject['x'].should == 'value'
|
28
|
+
end
|
29
|
+
it "should update existing value" do
|
30
|
+
subject.update(1,{'abc' => "value"}, {'x' => 'abc'}, [].to_set)
|
31
|
+
subject.update(1,{'def' => "changed"}, {'x' => 'def'}, [].to_set)
|
32
|
+
subject['x'].should == 'changed'
|
33
|
+
end
|
34
|
+
it "should raise exception if content is not found" do
|
35
|
+
expect{subject.update(1,{}, {'x' => 'dd'}, [].to_set)}.to raise_error StandardError
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should delete values when new hash is nil" do
|
39
|
+
subject.update(1,{'abc' => "value"}, {'x' => 'abc'}, [].to_set)
|
40
|
+
subject.update(1,{}, {'x' => nil}, ['abc'].to_set)
|
41
|
+
subject['x'].should be_nil
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should report changes caused by the update" do
|
45
|
+
subject.update(1,{'abc' => "value"}, {'x' => 'abc'}, [].to_set).should == {'x' => [nil,'value']}
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
describe :has_key? do
|
51
|
+
it "should return false when key does not exist" do
|
52
|
+
subject.should_not have_key('abc')
|
53
|
+
end
|
54
|
+
it "should return true when key does exist" do
|
55
|
+
subject.update(1,{'abc' => "value"}, {'x' => 'abc'}, [].to_set)
|
56
|
+
subject.should have_key('x')
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe :[] do
|
61
|
+
it "should return nil for not existing value" do
|
62
|
+
subject['x'].should be_nil
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
describe :current_transaction_sequence do
|
68
|
+
it "should return 0 for no transactions" do
|
69
|
+
subject.current_transaction_sequence.should == 0
|
70
|
+
end
|
71
|
+
it "should return last transaction sequence for first update" do
|
72
|
+
subject.update(1,{'abc' => "value"}, {'x' => 'abc'}, [].to_set)
|
73
|
+
subject.current_transaction_sequence.should == 1
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
end
|