26
26
import java .security .AccessControlContext ;
27
27
import java .security .AccessController ;
28
28
import java .security .Principal ;
29
- import java .util .ArrayList ;
30
29
import java .util .Collections ;
31
30
import java .util .List ;
32
31
import java .util .Objects ;
@@ -315,12 +314,47 @@ else if (statement != null)
315
314
log (entry , cause , query == null ? null : ImmutableList .of (query ));
316
315
}
317
316
318
- public void batchSuccess (BatchStatement .Type batchType , List <? extends CQLStatement > statements , List <String > queries , List <List <ByteBuffer >> values , QueryOptions options , QueryState state , long queryTime , Message .Response response )
317
+ public void batchSuccess (BatchStatement .Type batchType ,
318
+ List <? extends CQLStatement > statements ,
319
+ List <String > queries ,
320
+ List <List <ByteBuffer >> values ,
321
+ QueryOptions options ,
322
+ QueryState state ,
323
+ long queryStartTimeMillis ,
324
+ Message .Response response )
319
325
{
320
- List < AuditLogEntry > entries = buildEntriesForBatch ( statements , queries , state , options , queryTime ) ;
321
- for ( AuditLogEntry auditLogEntry : entries )
326
+ UUID batchId = null ;
327
+ if (! filter . isFiltered ( AuditLogEntryType . BATCH ) )
322
328
{
323
- log (auditLogEntry );
329
+ batchId = UUID .randomUUID (); // lazy init only if needed, to reduce overheads
330
+ log (new AuditLogEntry .Builder (state )
331
+ .setOperation ("BatchId:[" + batchId + "] - BATCH of [" + statements .size () + "] statements" )
332
+ .setOptions (options )
333
+ .setTimestamp (queryStartTimeMillis )
334
+ .setBatch (batchId )
335
+ .setType (AuditLogEntryType .BATCH )
336
+ .build ());
337
+ }
338
+
339
+ for (int i = 0 ; i < statements .size (); i ++)
340
+ {
341
+ CQLStatement statement = statements .get (i );
342
+ if (filter .isFiltered (statement .getAuditLogContext ()))
343
+ continue ;
344
+
345
+ if (batchId == null )
346
+ batchId = UUID .randomUUID ();
347
+
348
+ log (new AuditLogEntry .Builder (state )
349
+ .setType (statement .getAuditLogContext ().auditLogEntryType )
350
+ .setOperation (queries .get (i ))
351
+ .setTimestamp (queryStartTimeMillis )
352
+ .setScope (statement )
353
+ .setKeyspace (state , statement )
354
+ .setOptions (options )
355
+ .setBatch (batchId )
356
+ .build ());
357
+
324
358
}
325
359
}
326
360
@@ -334,38 +368,6 @@ public void batchFailure(BatchStatement.Type batchType, List<? extends CQLStatem
334
368
log (entry , cause , queries );
335
369
}
336
370
337
- private static List <AuditLogEntry > buildEntriesForBatch (List <? extends CQLStatement > statements , List <String > queries , QueryState state , QueryOptions options , long queryStartTimeMillis )
338
- {
339
- List <AuditLogEntry > auditLogEntries = new ArrayList <>(statements .size () + 1 );
340
- UUID batchId = UUID .randomUUID ();
341
- String queryString = String .format ("BatchId:[%s] - BATCH of [%d] statements" , batchId , statements .size ());
342
- AuditLogEntry entry = new AuditLogEntry .Builder (state )
343
- .setOperation (queryString )
344
- .setOptions (options )
345
- .setTimestamp (queryStartTimeMillis )
346
- .setBatch (batchId )
347
- .setType (AuditLogEntryType .BATCH )
348
- .build ();
349
- auditLogEntries .add (entry );
350
-
351
- for (int i = 0 ; i < statements .size (); i ++)
352
- {
353
- CQLStatement statement = statements .get (i );
354
- entry = new AuditLogEntry .Builder (state )
355
- .setType (statement .getAuditLogContext ().auditLogEntryType )
356
- .setOperation (queries .get (i ))
357
- .setTimestamp (queryStartTimeMillis )
358
- .setScope (statement )
359
- .setKeyspace (state , statement )
360
- .setOptions (options )
361
- .setBatch (batchId )
362
- .build ();
363
- auditLogEntries .add (entry );
364
- }
365
-
366
- return auditLogEntries ;
367
- }
368
-
369
371
public void prepareSuccess (CQLStatement statement , String query , QueryState state , long queryTime , ResultMessage .Prepared response )
370
372
{
371
373
AuditLogEntry entry = new AuditLogEntry .Builder (state ).setOperation (query )
0 commit comments