@@ -212,27 +212,26 @@ func (r *splunkReceiver) processSuccessResponse(resp http.ResponseWriter, bodyCo
212
212
}
213
213
214
214
func (r * splunkReceiver ) handleAck (resp http.ResponseWriter , req * http.Request ) {
215
- ctx := req .Context ()
216
215
if req .Method != http .MethodPost {
217
- r .failRequest (ctx , resp , http .StatusBadRequest , invalidMethodRespBodyPostOnly , 0 , errInvalidMethod )
216
+ r .failRequest (resp , http .StatusBadRequest , invalidMethodRespBodyPostOnly , errInvalidMethod )
218
217
return
219
218
}
220
219
221
220
// shouldn't run into this case since we only enable this handler IF ackExt exists. But we have this check just in case
222
221
if r .ackExt == nil {
223
- r .failRequest (ctx , resp , http .StatusInternalServerError , errInternalServerError , 0 , errExtensionMissing )
222
+ r .failRequest (resp , http .StatusInternalServerError , errInternalServerError , errExtensionMissing )
224
223
return
225
224
}
226
225
227
226
var channelID string
228
227
var extracted bool
229
228
if channelID , extracted = r .extractChannel (req ); extracted {
230
229
if channelErr := r .validateChannelHeader (channelID ); channelErr != nil {
231
- r .failRequest (ctx , resp , http .StatusBadRequest , []byte (channelErr .Error ()), 0 , channelErr )
230
+ r .failRequest (resp , http .StatusBadRequest , []byte (channelErr .Error ()), channelErr )
232
231
return
233
232
}
234
233
} else {
235
- r .failRequest (ctx , resp , http .StatusBadRequest , requiredDataChannelHeader , 0 , nil )
234
+ r .failRequest (resp , http .StatusBadRequest , requiredDataChannelHeader , nil )
236
235
return
237
236
}
238
237
@@ -241,19 +240,19 @@ func (r *splunkReceiver) handleAck(resp http.ResponseWriter, req *http.Request)
241
240
242
241
err := dec .Decode (& ackRequest )
243
242
if err != nil {
244
- r .failRequest (ctx , resp , http .StatusBadRequest , invalidFormatRespBody , 0 , err )
243
+ r .failRequest (resp , http .StatusBadRequest , invalidFormatRespBody , err )
245
244
return
246
245
}
247
246
248
247
if len (ackRequest .Acks ) == 0 {
249
- r .failRequest (ctx , resp , http .StatusBadRequest , invalidFormatRespBody , 0 , errors .New ("request body must include at least one ackID to be queried" ))
248
+ r .failRequest (resp , http .StatusBadRequest , invalidFormatRespBody , errors .New ("request body must include at least one ackID to be queried" ))
250
249
return
251
250
}
252
251
253
252
queriedAcks := r .ackExt .QueryAcks (channelID , ackRequest .Acks )
254
253
ackString , _ := json .Marshal (queriedAcks )
255
254
if err := r .processSuccessResponse (resp , []byte (fmt .Sprintf (ackResponse , ackString ))); err != nil {
256
- r .failRequest (ctx , resp , http .StatusInternalServerError , errInternalServerError , 0 , err )
255
+ r .failRequest (resp , http .StatusInternalServerError , errInternalServerError , err )
257
256
}
258
257
}
259
258
@@ -262,28 +261,28 @@ func (r *splunkReceiver) handleRawReq(resp http.ResponseWriter, req *http.Reques
262
261
ctx = r .obsrecv .StartLogsOp (ctx )
263
262
264
263
if req .Method != http .MethodPost {
265
- r .failRequest (ctx , resp , http .StatusBadRequest , invalidMethodRespBodyPostOnly , 0 , errInvalidMethod )
264
+ r .failRequest (resp , http .StatusBadRequest , invalidMethodRespBodyPostOnly , errInvalidMethod )
266
265
return
267
266
}
268
267
269
268
encoding := req .Header .Get (httpContentEncodingHeader )
270
269
if encoding != "" && encoding != gzipEncoding {
271
- r .failRequest (ctx , resp , http .StatusUnsupportedMediaType , invalidEncodingRespBody , 0 , errInvalidEncoding )
270
+ r .failRequest (resp , http .StatusUnsupportedMediaType , invalidEncodingRespBody , errInvalidEncoding )
272
271
return
273
272
}
274
273
275
274
var channelID string
276
275
var extracted bool
277
276
if channelID , extracted = r .extractChannel (req ); extracted {
278
277
if channelErr := r .validateChannelHeader (channelID ); channelErr != nil {
279
- r .failRequest (ctx , resp , http .StatusBadRequest , []byte (channelErr .Error ()), 0 , channelErr )
278
+ r .failRequest (resp , http .StatusBadRequest , []byte (channelErr .Error ()), channelErr )
280
279
return
281
280
}
282
281
}
283
282
284
283
if req .ContentLength == 0 {
285
284
r .obsrecv .EndLogsOp (ctx , metadata .Type .String (), 0 , nil )
286
- r .failRequest (ctx , resp , http .StatusBadRequest , noDataRespBody , 0 , nil )
285
+ r .failRequest (resp , http .StatusBadRequest , noDataRespBody , nil )
287
286
return
288
287
}
289
288
@@ -293,7 +292,7 @@ func (r *splunkReceiver) handleRawReq(resp http.ResponseWriter, req *http.Reques
293
292
err := reader .Reset (bodyReader )
294
293
295
294
if err != nil {
296
- r .failRequest (ctx , resp , http .StatusBadRequest , errGzipReaderRespBody , 0 , err )
295
+ r .failRequest (resp , http .StatusBadRequest , errGzipReaderRespBody , err )
297
296
_ , _ = io .ReadAll (req .Body )
298
297
_ = req .Body .Close ()
299
298
return
@@ -311,23 +310,23 @@ func (r *splunkReceiver) handleRawReq(resp http.ResponseWriter, req *http.Reques
311
310
err = errors .New ("time cannot be less than 0" )
312
311
}
313
312
if err != nil {
314
- r .failRequest (ctx , resp , http .StatusBadRequest , invalidFormatRespBody , 0 , err )
313
+ r .failRequest (resp , http .StatusBadRequest , invalidFormatRespBody , err )
315
314
return
316
315
}
317
316
timestamp = pcommon .NewTimestampFromTime (time .Unix (t , 0 ))
318
317
}
319
318
320
319
ld , slLen , err := splunkHecRawToLogData (bodyReader , query , resourceCustomizer , r .config , timestamp )
321
320
if err != nil {
322
- r .failRequest (ctx , resp , http .StatusInternalServerError , errInternalServerError , slLen , err )
321
+ r .failRequest (resp , http .StatusInternalServerError , errInternalServerError , err )
323
322
return
324
323
}
325
324
consumerErr := r .logsConsumer .ConsumeLogs (ctx , ld )
326
325
327
326
_ = bodyReader .Close ()
328
327
329
328
if consumerErr != nil {
330
- r .failRequest (ctx , resp , http .StatusInternalServerError , errInternalServerError , slLen , consumerErr )
329
+ r .failRequest (resp , http .StatusInternalServerError , errInternalServerError , consumerErr )
331
330
} else {
332
331
var ackErr error
333
332
if len (channelID ) > 0 && r .ackExt != nil {
@@ -336,7 +335,7 @@ func (r *splunkReceiver) handleRawReq(resp http.ResponseWriter, req *http.Reques
336
335
ackErr = r .processSuccessResponse (resp , okRespBody )
337
336
}
338
337
if ackErr != nil {
339
- r .failRequest (ctx , resp , http .StatusInternalServerError , errInternalServerError , ld . LogRecordCount () , err )
338
+ r .failRequest (resp , http .StatusInternalServerError , errInternalServerError , err )
340
339
} else {
341
340
r .obsrecv .EndLogsOp (ctx , metadata .Type .String (), slLen , nil )
342
341
}
@@ -377,28 +376,22 @@ func (r *splunkReceiver) validateChannelHeader(channelID string) error {
377
376
378
377
func (r * splunkReceiver ) handleReq (resp http.ResponseWriter , req * http.Request ) {
379
378
ctx := req .Context ()
380
- if r .logsConsumer != nil {
381
- ctx = r .obsrecv .StartLogsOp (ctx )
382
- }
383
- if r .metricsConsumer != nil {
384
- ctx = r .obsrecv .StartMetricsOp (ctx )
385
- }
386
379
387
380
if req .Method != http .MethodPost {
388
- r .failRequest (ctx , resp , http .StatusBadRequest , invalidMethodRespBodyPostOnly , 0 , errInvalidMethod )
381
+ r .failRequest (resp , http .StatusBadRequest , invalidMethodRespBodyPostOnly , errInvalidMethod )
389
382
return
390
383
}
391
384
392
385
encoding := req .Header .Get (httpContentEncodingHeader )
393
386
if encoding != "" && encoding != gzipEncoding {
394
- r .failRequest (ctx , resp , http .StatusUnsupportedMediaType , invalidEncodingRespBody , 0 , errInvalidEncoding )
387
+ r .failRequest (resp , http .StatusUnsupportedMediaType , invalidEncodingRespBody , errInvalidEncoding )
395
388
return
396
389
}
397
390
398
391
channelID , extracted := r .extractChannel (req )
399
392
if extracted {
400
393
if channelErr := r .validateChannelHeader (channelID ); channelErr != nil {
401
- r .failRequest (ctx , resp , http .StatusBadRequest , []byte (channelErr .Error ()), 0 , channelErr )
394
+ r .failRequest (resp , http .StatusBadRequest , []byte (channelErr .Error ()), channelErr )
402
395
return
403
396
}
404
397
}
@@ -408,15 +401,15 @@ func (r *splunkReceiver) handleReq(resp http.ResponseWriter, req *http.Request)
408
401
reader := r .gzipReaderPool .Get ().(* gzip.Reader )
409
402
err := reader .Reset (bodyReader )
410
403
if err != nil {
411
- r .failRequest (ctx , resp , http .StatusBadRequest , errGzipReaderRespBody , 0 , err )
404
+ r .failRequest (resp , http .StatusBadRequest , errGzipReaderRespBody , err )
412
405
return
413
406
}
414
407
bodyReader = reader
415
408
defer r .gzipReaderPool .Put (reader )
416
409
}
417
410
418
411
if req .ContentLength == 0 {
419
- r .failRequest (ctx , resp , http .StatusBadRequest , noDataRespBody , 0 , nil )
412
+ r .failRequest (resp , http .StatusBadRequest , noDataRespBody , nil )
420
413
return
421
414
}
422
415
@@ -429,35 +422,35 @@ func (r *splunkReceiver) handleReq(resp http.ResponseWriter, req *http.Request)
429
422
var msg splunk.Event
430
423
err := dec .Decode (& msg )
431
424
if err != nil {
432
- r .failRequest (ctx , resp , http .StatusBadRequest , invalidFormatRespBody , len ( events ) + len ( metricEvents ) , err )
425
+ r .failRequest (resp , http .StatusBadRequest , invalidFormatRespBody , err )
433
426
return
434
427
}
435
428
436
429
if msg .Event == nil {
437
- r .failRequest (ctx , resp , http .StatusBadRequest , eventRequiredRespBody , len ( events ) + len ( metricEvents ) , nil )
430
+ r .failRequest (resp , http .StatusBadRequest , eventRequiredRespBody , nil )
438
431
return
439
432
}
440
433
441
434
if msg .Event == "" {
442
- r .failRequest (ctx , resp , http .StatusBadRequest , eventBlankRespBody , len ( events ) + len ( metricEvents ) , nil )
435
+ r .failRequest (resp , http .StatusBadRequest , eventBlankRespBody , nil )
443
436
return
444
437
}
445
438
446
439
for _ , v := range msg .Fields {
447
440
if ! isFlatJSONField (v ) {
448
- r .failRequest (ctx , resp , http .StatusBadRequest , []byte (fmt .Sprintf (responseErrHandlingIndexedFields , len (events )+ len (metricEvents ))), len ( events ) + len ( metricEvents ), nil )
441
+ r .failRequest (resp , http .StatusBadRequest , []byte (fmt .Sprintf (responseErrHandlingIndexedFields , len (events )+ len (metricEvents ))), nil )
449
442
return
450
443
}
451
444
}
452
445
if msg .IsMetric () {
453
446
if r .metricsConsumer == nil {
454
- r .failRequest (ctx , resp , http .StatusBadRequest , errUnsupportedMetricEvent , len ( metricEvents ) , err )
447
+ r .failRequest (resp , http .StatusBadRequest , errUnsupportedMetricEvent , err )
455
448
return
456
449
}
457
450
metricEvents = append (metricEvents , & msg )
458
451
} else {
459
452
if r .logsConsumer == nil {
460
- r .failRequest (ctx , resp , http .StatusBadRequest , errUnsupportedLogEvent , len ( events ) , err )
453
+ r .failRequest (resp , http .StatusBadRequest , errUnsupportedLogEvent , err )
461
454
return
462
455
}
463
456
events = append (events , & msg )
@@ -468,21 +461,24 @@ func (r *splunkReceiver) handleReq(resp http.ResponseWriter, req *http.Request)
468
461
if r .logsConsumer != nil && len (events ) > 0 {
469
462
ld , err := splunkHecToLogData (r .settings .Logger , events , resourceCustomizer , r .config )
470
463
if err != nil {
471
- r .failRequest (ctx , resp , http .StatusBadRequest , errUnmarshalBodyRespBody , len ( events ) , err )
464
+ r .failRequest (resp , http .StatusBadRequest , errUnmarshalBodyRespBody , err )
472
465
return
473
466
}
467
+ ctx = r .obsrecv .StartLogsOp (ctx )
474
468
decodeErr := r .logsConsumer .ConsumeLogs (ctx , ld )
469
+ r .obsrecv .EndLogsOp (ctx , metadata .Type .String (), len (events ), nil )
475
470
if decodeErr != nil {
476
- r .failRequest (ctx , resp , http .StatusInternalServerError , errInternalServerError , len ( events ) , decodeErr )
471
+ r .failRequest (resp , http .StatusInternalServerError , errInternalServerError , decodeErr )
477
472
return
478
473
}
479
474
}
480
475
if r .metricsConsumer != nil && len (metricEvents ) > 0 {
481
476
md , _ := splunkHecToMetricsData (r .settings .Logger , metricEvents , resourceCustomizer , r .config )
482
-
477
+ ctx = r . obsrecv . StartMetricsOp ( ctx )
483
478
decodeErr := r .metricsConsumer .ConsumeMetrics (ctx , md )
479
+ r .obsrecv .EndMetricsOp (ctx , metadata .Type .String (), len (metricEvents ), nil )
484
480
if decodeErr != nil {
485
- r .failRequest (ctx , resp , http .StatusInternalServerError , errInternalServerError , len ( metricEvents ) , decodeErr )
481
+ r .failRequest (resp , http .StatusInternalServerError , errInternalServerError , decodeErr )
486
482
return
487
483
}
488
484
}
@@ -494,14 +490,7 @@ func (r *splunkReceiver) handleReq(resp http.ResponseWriter, req *http.Request)
494
490
ackErr = r .processSuccessResponse (resp , okRespBody )
495
491
}
496
492
if ackErr != nil {
497
- r .failRequest (ctx , resp , http .StatusInternalServerError , errInternalServerError , len (events )+ len (metricEvents ), ackErr )
498
- } else {
499
- if r .logsConsumer != nil {
500
- r .obsrecv .EndLogsOp (ctx , metadata .Type .String (), len (events ), nil )
501
- }
502
- if r .metricsConsumer != nil {
503
- r .obsrecv .EndMetricsOp (ctx , metadata .Type .String (), len (metricEvents ), nil )
504
- }
493
+ r .failRequest (resp , http .StatusInternalServerError , errInternalServerError , ackErr )
505
494
}
506
495
}
507
496
@@ -519,11 +508,9 @@ func (r *splunkReceiver) createResourceCustomizer(req *http.Request) func(resour
519
508
}
520
509
521
510
func (r * splunkReceiver ) failRequest (
522
- ctx context.Context ,
523
511
resp http.ResponseWriter ,
524
512
httpStatusCode int ,
525
513
jsonResponse []byte ,
526
- numRecordsReceived int ,
527
514
err error ,
528
515
) {
529
516
resp .WriteHeader (httpStatusCode )
@@ -536,13 +523,6 @@ func (r *splunkReceiver) failRequest(
536
523
}
537
524
}
538
525
539
- if r .logsConsumer != nil {
540
- r .obsrecv .EndLogsOp (ctx , metadata .Type .String (), numRecordsReceived , err )
541
- }
542
- if r .metricsConsumer != nil {
543
- r .obsrecv .EndMetricsOp (ctx , metadata .Type .String (), numRecordsReceived , err )
544
- }
545
-
546
526
if r .settings .Logger .Core ().Enabled (zap .DebugLevel ) {
547
527
msg := string (jsonResponse )
548
528
r .settings .Logger .Debug (
0 commit comments