7
7
8
8
namespace Orleans . Runtime . MembershipService
9
9
{
10
- public class AdoNetClusteringTable : IMembershipTable
10
+ public partial class AdoNetClusteringTable : IMembershipTable
11
11
{
12
12
private readonly string clusterId ;
13
13
private readonly IServiceProvider serviceProvider ;
@@ -29,66 +29,58 @@ public AdoNetClusteringTable(
29
29
30
30
public async Task InitializeMembershipTable ( bool tryInitTableVersion )
31
31
{
32
- if ( logger . IsEnabled ( LogLevel . Trace ) ) logger . LogTrace ( "AdoNetClusteringTable.InitializeMembershipTable called." ) ;
32
+ LogTraceInitializeMembershipTable ( ) ;
33
33
34
34
//This initializes all of Orleans operational queries from the database using a well known view
35
35
//and assumes the database with appropriate definitions exists already.
36
36
orleansQueries = await RelationalOrleansQueries . CreateInstance (
37
37
clusteringTableOptions . Invariant ,
38
38
clusteringTableOptions . ConnectionString ) ;
39
39
40
- // even if I am not the one who created the table,
40
+ // even if I am not the one who created the table,
41
41
// try to insert an initial table version if it is not already there,
42
42
// so we always have a first table version row, before this silo starts working.
43
43
if ( tryInitTableVersion )
44
44
{
45
45
var wasCreated = await InitTableAsync ( ) ;
46
46
if ( wasCreated )
47
47
{
48
- logger . LogInformation ( "Created new table version row." ) ;
48
+ LogInfoCreatedNewTableVersionRow ( ) ;
49
49
}
50
50
}
51
51
}
52
52
53
-
54
53
public async Task < MembershipTableData > ReadRow ( SiloAddress key )
55
54
{
56
- if ( logger . IsEnabled ( LogLevel . Trace ) )
57
- logger . LogTrace ( "AdoNetClusteringTable.ReadRow called with key: {Key}." , key ) ;
55
+ LogTraceReadRow ( key ) ;
58
56
try
59
57
{
60
58
return await orleansQueries . MembershipReadRowAsync ( this . clusterId , key ) ;
61
59
}
62
60
catch ( Exception ex )
63
61
{
64
- if ( logger . IsEnabled ( LogLevel . Debug ) ) logger . LogDebug ( ex , "AdoNetClusteringTable.ReadRow failed" ) ;
62
+ LogDebugReadRowFailed ( ex ) ;
65
63
throw ;
66
64
}
67
65
}
68
66
69
-
70
67
public async Task < MembershipTableData > ReadAll ( )
71
68
{
72
- if ( logger . IsEnabled ( LogLevel . Trace ) ) logger . LogTrace ( "AdoNetClusteringTable.ReadAll called." ) ;
69
+ LogTraceReadAll ( ) ;
73
70
try
74
71
{
75
72
return await orleansQueries . MembershipReadAllAsync ( this . clusterId ) ;
76
73
}
77
74
catch ( Exception ex )
78
75
{
79
- if ( logger . IsEnabled ( LogLevel . Debug ) ) logger . LogDebug ( ex , "AdoNetClusteringTable.ReadAll failed" ) ;
76
+ LogDebugReadAllFailed ( ex ) ;
80
77
throw ;
81
78
}
82
79
}
83
80
84
-
85
81
public async Task < bool > InsertRow ( MembershipEntry entry , TableVersion tableVersion )
86
82
{
87
- if ( logger . IsEnabled ( LogLevel . Trace ) )
88
- logger . LogTrace (
89
- "AdoNetClusteringTable.InsertRow called with entry {Entry} and tableVersion {TableVersion}." ,
90
- entry ,
91
- tableVersion ) ;
83
+ LogTraceInsertRow ( entry , tableVersion ) ;
92
84
93
85
//The "tableVersion" parameter should always exist when inserting a row as Init should
94
86
//have been called and membership version created and read. This is an optimization to
@@ -97,12 +89,12 @@ public async Task<bool> InsertRow(MembershipEntry entry, TableVersion tableVersi
97
89
//Likewise, no update can be done without membership entry.
98
90
if ( entry == null )
99
91
{
100
- if ( logger . IsEnabled ( LogLevel . Debug ) ) logger . LogDebug ( "AdoNetClusteringTable.InsertRow aborted due to null check. MembershipEntry is null." ) ;
92
+ LogDebugInsertRowAbortedNullEntry ( ) ;
101
93
throw new ArgumentNullException ( nameof ( entry ) ) ;
102
94
}
103
95
if ( tableVersion is null )
104
96
{
105
- if ( logger . IsEnabled ( LogLevel . Debug ) ) logger . LogDebug ( "AdoNetClusteringTable.InsertRow aborted due to null check. TableVersion is null " ) ;
97
+ LogDebugInsertRowAbortedNullTableVersion ( ) ;
106
98
throw new ArgumentNullException ( nameof ( tableVersion ) ) ;
107
99
}
108
100
@@ -112,15 +104,14 @@ public async Task<bool> InsertRow(MembershipEntry entry, TableVersion tableVersi
112
104
}
113
105
catch ( Exception ex )
114
106
{
115
- if ( logger . IsEnabled ( LogLevel . Debug ) ) logger . LogDebug ( ex , "AdoNetClusteringTable.InsertRow failed" ) ;
107
+ LogDebugInsertRowFailed ( ex ) ;
116
108
throw ;
117
109
}
118
110
}
119
111
120
-
121
112
public async Task < bool > UpdateRow ( MembershipEntry entry , string etag , TableVersion tableVersion )
122
113
{
123
- if ( logger . IsEnabled ( LogLevel . Trace ) ) logger . LogTrace ( "IMembershipTable.UpdateRow called with entry {Entry}, etag {ETag} and tableVersion {TableVersion}." , entry , etag , tableVersion ) ;
114
+ LogTraceUpdateRow ( entry , etag , tableVersion ) ;
124
115
125
116
//The "tableVersion" parameter should always exist when updating a row as Init should
126
117
//have been called and membership version created and read. This is an optimization to
@@ -129,12 +120,12 @@ public async Task<bool> UpdateRow(MembershipEntry entry, string etag, TableVersi
129
120
//Likewise, no update can be done without membership entry or an etag.
130
121
if ( entry == null )
131
122
{
132
- if ( logger . IsEnabled ( LogLevel . Debug ) ) logger . LogDebug ( "AdoNetClusteringTable.UpdateRow aborted due to null check. MembershipEntry is null." ) ;
123
+ LogDebugUpdateRowAbortedNullEntry ( ) ;
133
124
throw new ArgumentNullException ( nameof ( entry ) ) ;
134
125
}
135
126
if ( tableVersion is null )
136
127
{
137
- if ( logger . IsEnabled ( LogLevel . Debug ) ) logger . LogDebug ( "AdoNetClusteringTable.UpdateRow aborted due to null check. TableVersion is null" ) ;
128
+ LogDebugUpdateRowAbortedNullTableVersion ( ) ;
138
129
throw new ArgumentNullException ( nameof ( tableVersion ) ) ;
139
130
}
140
131
@@ -144,19 +135,17 @@ public async Task<bool> UpdateRow(MembershipEntry entry, string etag, TableVersi
144
135
}
145
136
catch ( Exception ex )
146
137
{
147
- if ( logger . IsEnabled ( LogLevel . Debug ) ) logger . LogDebug ( ex , "AdoNetClusteringTable.UpdateRow failed" ) ;
138
+ LogDebugUpdateRowFailed ( ex ) ;
148
139
throw ;
149
140
}
150
141
}
151
142
152
-
153
143
public async Task UpdateIAmAlive ( MembershipEntry entry )
154
144
{
155
- if ( logger . IsEnabled ( LogLevel . Trace ) )
156
- logger . LogTrace ( "IMembershipTable.UpdateIAmAlive called with entry {Entry}." , entry ) ;
145
+ LogTraceUpdateIAmAlive ( entry ) ;
157
146
if ( entry == null )
158
147
{
159
- if ( logger . IsEnabled ( LogLevel . Debug ) ) logger . LogDebug ( "AdoNetClusteringTable.UpdateIAmAlive aborted due to null check. MembershipEntry is null." ) ;
148
+ LogDebugUpdateIAmAliveAbortedNullEntry ( ) ;
160
149
throw new ArgumentNullException ( nameof ( entry ) ) ;
161
150
}
162
151
try
@@ -165,41 +154,35 @@ public async Task UpdateIAmAlive(MembershipEntry entry)
165
154
}
166
155
catch ( Exception ex )
167
156
{
168
- if ( logger . IsEnabled ( LogLevel . Debug ) )
169
- logger . LogDebug ( ex , "AdoNetClusteringTable.UpdateIAmAlive failed" ) ;
157
+ LogDebugUpdateIAmAliveFailed ( ex ) ;
170
158
throw ;
171
159
}
172
160
}
173
161
174
-
175
162
public async Task DeleteMembershipTableEntries ( string clusterId )
176
163
{
177
- if ( logger . IsEnabled ( LogLevel . Trace ) )
178
- logger . LogTrace ( "IMembershipTable.DeleteMembershipTableEntries called with clusterId {ClusterId}." , clusterId ) ;
164
+ LogTraceDeleteMembershipTableEntries ( clusterId ) ;
179
165
try
180
166
{
181
167
await orleansQueries . DeleteMembershipTableEntriesAsync ( clusterId ) ;
182
168
}
183
169
catch ( Exception ex )
184
170
{
185
- if ( logger . IsEnabled ( LogLevel . Debug ) )
186
- logger . LogDebug ( ex , "AdoNetClusteringTable.DeleteMembershipTableEntries failed" ) ;
171
+ LogDebugDeleteMembershipTableEntriesFailed ( ex ) ;
187
172
throw ;
188
173
}
189
174
}
190
175
191
176
public async Task CleanupDefunctSiloEntries ( DateTimeOffset beforeDate )
192
177
{
193
- if ( logger . IsEnabled ( LogLevel . Trace ) )
194
- logger . LogTrace ( "IMembershipTable.CleanupDefunctSiloEntries called with beforeDate {beforeDate} and clusterId {ClusterId}." , beforeDate , clusterId ) ;
178
+ LogTraceCleanupDefunctSiloEntries ( beforeDate , clusterId ) ;
195
179
try
196
180
{
197
181
await orleansQueries . CleanupDefunctSiloEntriesAsync ( beforeDate , this . clusterId ) ;
198
182
}
199
183
catch ( Exception ex )
200
184
{
201
- if ( logger . IsEnabled ( LogLevel . Debug ) )
202
- logger . LogDebug ( ex , "AdoNetClusteringTable.CleanupDefunctSiloEntries failed" ) ;
185
+ LogDebugCleanupDefunctSiloEntriesFailed ( ex ) ;
203
186
throw ;
204
187
}
205
188
}
@@ -212,9 +195,141 @@ private async Task<bool> InitTableAsync()
212
195
}
213
196
catch ( Exception ex )
214
197
{
215
- if ( logger . IsEnabled ( LogLevel . Trace ) ) logger . LogTrace ( ex , "Insert silo membership version failed" ) ;
198
+ LogTraceInsertSiloMembershipVersionFailed ( ex ) ;
216
199
throw ;
217
200
}
218
201
}
202
+
203
+ [ LoggerMessage (
204
+ Level = LogLevel . Trace ,
205
+ Message = $ "{ nameof ( AdoNetClusteringTable ) } .{ nameof ( InitializeMembershipTable ) } called."
206
+ ) ]
207
+ private partial void LogTraceInitializeMembershipTable ( ) ;
208
+
209
+ [ LoggerMessage (
210
+ Level = LogLevel . Information ,
211
+ Message = "Created new table version row."
212
+ ) ]
213
+ private partial void LogInfoCreatedNewTableVersionRow ( ) ;
214
+
215
+ [ LoggerMessage (
216
+ Level = LogLevel . Trace ,
217
+ Message = $ "{ nameof ( AdoNetClusteringTable ) } .{ nameof ( ReadRow ) } called with key: {{Key}}."
218
+ ) ]
219
+ private partial void LogTraceReadRow ( SiloAddress key ) ;
220
+
221
+ [ LoggerMessage (
222
+ Level = LogLevel . Debug ,
223
+ Message = $ "{ nameof ( AdoNetClusteringTable ) } .{ nameof ( ReadRow ) } failed"
224
+ ) ]
225
+ private partial void LogDebugReadRowFailed ( Exception exception ) ;
226
+
227
+ [ LoggerMessage (
228
+ Level = LogLevel . Trace ,
229
+ Message = $ "{ nameof ( AdoNetClusteringTable ) } .{ nameof ( ReadAll ) } called."
230
+ ) ]
231
+ private partial void LogTraceReadAll ( ) ;
232
+
233
+ [ LoggerMessage (
234
+ Level = LogLevel . Debug ,
235
+ Message = $ "{ nameof ( AdoNetClusteringTable ) } .{ nameof ( ReadAll ) } failed"
236
+ ) ]
237
+ private partial void LogDebugReadAllFailed ( Exception exception ) ;
238
+
239
+ [ LoggerMessage (
240
+ Level = LogLevel . Trace ,
241
+ Message = $ "{ nameof ( AdoNetClusteringTable ) } .{ nameof ( InsertRow ) } called with entry {{Entry}} and tableVersion {{TableVersion}}."
242
+ ) ]
243
+ private partial void LogTraceInsertRow ( MembershipEntry entry , TableVersion tableVersion ) ;
244
+
245
+ [ LoggerMessage (
246
+ Level = LogLevel . Debug ,
247
+ Message = $ "{ nameof ( AdoNetClusteringTable ) } .{ nameof ( InsertRow ) } aborted due to null check. MembershipEntry is null."
248
+ ) ]
249
+ private partial void LogDebugInsertRowAbortedNullEntry ( ) ;
250
+
251
+ [ LoggerMessage (
252
+ Level = LogLevel . Debug ,
253
+ Message = $ "{ nameof ( AdoNetClusteringTable ) } .{ nameof ( InsertRow ) } aborted due to null check. TableVersion is null "
254
+ ) ]
255
+ private partial void LogDebugInsertRowAbortedNullTableVersion ( ) ;
256
+
257
+ [ LoggerMessage (
258
+ Level = LogLevel . Debug ,
259
+ Message = $ "{ nameof ( AdoNetClusteringTable ) } .{ nameof ( InsertRow ) } failed"
260
+ ) ]
261
+ private partial void LogDebugInsertRowFailed ( Exception exception ) ;
262
+
263
+ [ LoggerMessage (
264
+ Level = LogLevel . Trace ,
265
+ Message = $ "{ nameof ( IMembershipTable ) } .{ nameof ( UpdateRow ) } called with entry {{Entry}}, etag {{ETag}} and tableVersion {{TableVersion}}."
266
+ ) ]
267
+ private partial void LogTraceUpdateRow ( MembershipEntry entry , string etag , TableVersion tableVersion ) ;
268
+
269
+ [ LoggerMessage (
270
+ Level = LogLevel . Debug ,
271
+ Message = $ "{ nameof ( AdoNetClusteringTable ) } .{ nameof ( UpdateRow ) } aborted due to null check. MembershipEntry is null."
272
+ ) ]
273
+ private partial void LogDebugUpdateRowAbortedNullEntry ( ) ;
274
+
275
+ [ LoggerMessage (
276
+ Level = LogLevel . Debug ,
277
+ Message = $ "{ nameof ( AdoNetClusteringTable ) } .{ nameof ( UpdateRow ) } aborted due to null check. TableVersion is null"
278
+ ) ]
279
+ private partial void LogDebugUpdateRowAbortedNullTableVersion ( ) ;
280
+
281
+ [ LoggerMessage (
282
+ Level = LogLevel . Debug ,
283
+ Message = $ "{ nameof ( AdoNetClusteringTable ) } .{ nameof ( UpdateRow ) } failed"
284
+ ) ]
285
+ private partial void LogDebugUpdateRowFailed ( Exception exception ) ;
286
+
287
+ [ LoggerMessage (
288
+ Level = LogLevel . Trace ,
289
+ Message = $ "{ nameof ( IMembershipTable ) } .{ nameof ( UpdateIAmAlive ) } called with entry {{Entry}}."
290
+ ) ]
291
+ private partial void LogTraceUpdateIAmAlive ( MembershipEntry entry ) ;
292
+
293
+ [ LoggerMessage (
294
+ Level = LogLevel . Debug ,
295
+ Message = $ "{ nameof ( AdoNetClusteringTable ) } .{ nameof ( UpdateIAmAlive ) } aborted due to null check. MembershipEntry is null."
296
+ ) ]
297
+ private partial void LogDebugUpdateIAmAliveAbortedNullEntry ( ) ;
298
+
299
+ [ LoggerMessage (
300
+ Level = LogLevel . Debug ,
301
+ Message = $ "{ nameof ( AdoNetClusteringTable ) } .{ nameof ( UpdateIAmAlive ) } failed"
302
+ ) ]
303
+ private partial void LogDebugUpdateIAmAliveFailed ( Exception exception ) ;
304
+
305
+ [ LoggerMessage (
306
+ Level = LogLevel . Trace ,
307
+ Message = $ "{ nameof ( IMembershipTable ) } .{ nameof ( DeleteMembershipTableEntries ) } called with clusterId {{ClusterId}}."
308
+ ) ]
309
+ private partial void LogTraceDeleteMembershipTableEntries ( string clusterId ) ;
310
+
311
+ [ LoggerMessage (
312
+ Level = LogLevel . Debug ,
313
+ Message = $ "{ nameof ( AdoNetClusteringTable ) } .{ nameof ( DeleteMembershipTableEntries ) } failed"
314
+ ) ]
315
+ private partial void LogDebugDeleteMembershipTableEntriesFailed ( Exception exception ) ;
316
+
317
+ [ LoggerMessage (
318
+ Level = LogLevel . Trace ,
319
+ Message = $ "{ nameof ( IMembershipTable ) } .{ nameof ( CleanupDefunctSiloEntries ) } called with beforeDate {{beforeDate}} and clusterId {{ClusterId}}."
320
+ ) ]
321
+ private partial void LogTraceCleanupDefunctSiloEntries ( DateTimeOffset beforeDate , string clusterId ) ;
322
+
323
+ [ LoggerMessage (
324
+ Level = LogLevel . Debug ,
325
+ Message = $ "{ nameof ( AdoNetClusteringTable ) } .{ nameof ( CleanupDefunctSiloEntries ) } failed"
326
+ ) ]
327
+ private partial void LogDebugCleanupDefunctSiloEntriesFailed ( Exception exception ) ;
328
+
329
+ [ LoggerMessage (
330
+ Level = LogLevel . Trace ,
331
+ Message = "Insert silo membership version failed"
332
+ ) ]
333
+ private partial void LogTraceInsertSiloMembershipVersionFailed ( Exception exception ) ;
219
334
}
220
335
}
0 commit comments