@@ -440,15 +440,19 @@ public void recordOperation(
440
440
for (ClientSideRequestStatistics requestStatistics : clientSideRequestStatistics ) {
441
441
442
442
recordStoreResponseStatistics (
443
+ diagnosticsContext ,
443
444
cosmosAsyncClient ,
444
445
requestStatistics .getResponseStatisticsList ());
445
446
recordStoreResponseStatistics (
447
+ diagnosticsContext ,
446
448
cosmosAsyncClient ,
447
449
requestStatistics .getSupplementalResponseStatisticsList ());
448
450
recordGatewayStatistics (
451
+ diagnosticsContext ,
449
452
cosmosAsyncClient ,
450
453
requestStatistics .getDuration (), requestStatistics .getGatewayStatistics ());
451
454
recordAddressResolutionStatistics (
455
+ diagnosticsContext ,
452
456
cosmosAsyncClient ,
453
457
requestStatistics .getAddressResolutionStatistics ());
454
458
}
@@ -464,11 +468,12 @@ public void recordOperation(
464
468
QueryInfo .QueryPlanDiagnosticsContext queryPlanDiagnostics =
465
469
feedDiagnostics .getQueryPlanDiagnosticsContext ();
466
470
467
- recordQueryPlanDiagnostics (cosmosAsyncClient , queryPlanDiagnostics );
471
+ recordQueryPlanDiagnostics (diagnosticsContext , cosmosAsyncClient , queryPlanDiagnostics );
468
472
}
469
473
}
470
474
471
475
private void recordQueryPlanDiagnostics (
476
+ CosmosDiagnosticsContext ctx ,
472
477
CosmosAsyncClient cosmosAsyncClient ,
473
478
QueryInfo .QueryPlanDiagnosticsContext queryPlanDiagnostics
474
479
) {
@@ -483,7 +488,8 @@ private void recordQueryPlanDiagnostics(
483
488
CosmosMeterOptions requestsOptions = clientAccessor .getMeterOptions (
484
489
cosmosAsyncClient ,
485
490
CosmosMetricName .REQUEST_SUMMARY_GATEWAY_REQUESTS );
486
- if (requestsOptions .isEnabled ()) {
491
+ if (requestsOptions .isEnabled () &&
492
+ (!requestsOptions .isDiagnosticThresholdsFilteringEnabled () || ctx .isThresholdViolated ())) {
487
493
Counter requestCounter = Counter
488
494
.builder (requestsOptions .getMeterName ().toString ())
489
495
.baseUnit ("requests" )
@@ -499,7 +505,8 @@ private void recordQueryPlanDiagnostics(
499
505
CosmosMeterOptions latencyOptions = clientAccessor .getMeterOptions (
500
506
cosmosAsyncClient ,
501
507
CosmosMetricName .REQUEST_SUMMARY_GATEWAY_LATENCY );
502
- if (latencyOptions .isEnabled ()) {
508
+ if (latencyOptions .isEnabled () &&
509
+ (!latencyOptions .isDiagnosticThresholdsFilteringEnabled () || ctx .isThresholdViolated ())) {
503
510
Timer requestLatencyMeter = Timer
504
511
.builder (latencyOptions .getMeterName ().toString ())
505
512
.description ("Gateway Request latency" )
@@ -513,20 +520,23 @@ private void recordQueryPlanDiagnostics(
513
520
}
514
521
515
522
recordRequestTimeline (
523
+ ctx ,
516
524
cosmosAsyncClient ,
517
525
CosmosMetricName .REQUEST_DETAILS_GATEWAY_TIMELINE ,
518
526
queryPlanDiagnostics .getRequestTimeline (), requestTags );
519
527
}
520
528
521
529
private void recordRequestPayloadSizes (
530
+ CosmosDiagnosticsContext ctx ,
522
531
CosmosAsyncClient client ,
523
532
int requestPayloadSizeInBytes ,
524
533
int responsePayloadSizeInBytes
525
534
) {
526
535
CosmosMeterOptions reqSizeOptions = clientAccessor .getMeterOptions (
527
536
client ,
528
537
CosmosMetricName .REQUEST_SUMMARY_SIZE_REQUEST );
529
- if (reqSizeOptions .isEnabled ()) {
538
+ if (reqSizeOptions .isEnabled () &&
539
+ (!reqSizeOptions .isDiagnosticThresholdsFilteringEnabled () || ctx .isThresholdViolated ())) {
530
540
DistributionSummary requestPayloadSizeMeter = DistributionSummary
531
541
.builder (reqSizeOptions .getMeterName ().toString ())
532
542
.baseUnit ("bytes" )
@@ -542,7 +552,8 @@ private void recordRequestPayloadSizes(
542
552
CosmosMeterOptions rspSizeOptions = clientAccessor .getMeterOptions (
543
553
client ,
544
554
CosmosMetricName .REQUEST_SUMMARY_SIZE_RESPONSE );
545
- if (rspSizeOptions .isEnabled ()) {
555
+ if (rspSizeOptions .isEnabled () &&
556
+ (!rspSizeOptions .isDiagnosticThresholdsFilteringEnabled () || ctx .isThresholdViolated ())) {
546
557
DistributionSummary responsePayloadSizeMeter = DistributionSummary
547
558
.builder (rspSizeOptions .getMeterName ().toString ())
548
559
.baseUnit ("bytes" )
@@ -752,6 +763,7 @@ private void recordRntbdEndpointStatistics(
752
763
}
753
764
754
765
private void recordRequestTimeline (
766
+ CosmosDiagnosticsContext ctx ,
755
767
CosmosAsyncClient client ,
756
768
CosmosMetricName name ,
757
769
RequestTimeline requestTimeline ,
@@ -764,7 +776,8 @@ private void recordRequestTimeline(
764
776
CosmosMeterOptions timelineOptions = clientAccessor .getMeterOptions (
765
777
client ,
766
778
name );
767
- if (!timelineOptions .isEnabled ()) {
779
+ if (!timelineOptions .isEnabled () ||
780
+ (timelineOptions .isDiagnosticThresholdsFilteringEnabled () && !ctx .isThresholdViolated ())) {
768
781
return ;
769
782
}
770
783
for (RequestTimeline .Event event : requestTimeline ) {
@@ -786,6 +799,7 @@ private void recordRequestTimeline(
786
799
}
787
800
788
801
private void recordStoreResponseStatistics (
802
+ CosmosDiagnosticsContext ctx ,
789
803
CosmosAsyncClient client ,
790
804
List <ClientSideRequestStatistics .StoreResponseStatistics > storeResponseStatistics ) {
791
805
@@ -818,7 +832,8 @@ private void recordStoreResponseStatistics(
818
832
CosmosMeterOptions beLatencyOptions = clientAccessor .getMeterOptions (
819
833
client ,
820
834
CosmosMetricName .REQUEST_SUMMARY_DIRECT_BACKEND_LATENCY );
821
- if (beLatencyOptions .isEnabled ()) {
835
+ if (beLatencyOptions .isEnabled () &&
836
+ (!beLatencyOptions .isDiagnosticThresholdsFilteringEnabled () || ctx .isThresholdViolated ())) {
822
837
DistributionSummary backendRequestLatencyMeter = DistributionSummary
823
838
.builder (beLatencyOptions .getMeterName ().toString ())
824
839
.baseUnit ("ms" )
@@ -835,7 +850,8 @@ private void recordStoreResponseStatistics(
835
850
CosmosMeterOptions ruOptions = clientAccessor .getMeterOptions (
836
851
client ,
837
852
CosmosMetricName .REQUEST_SUMMARY_DIRECT_REQUEST_CHARGE );
838
- if (ruOptions .isEnabled ()) {
853
+ if (ruOptions .isEnabled () &&
854
+ (!ruOptions .isDiagnosticThresholdsFilteringEnabled () || ctx .isThresholdViolated ())) {
839
855
double requestCharge = storeResponseDiagnostics .getRequestCharge ();
840
856
DistributionSummary requestChargeMeter = DistributionSummary
841
857
.builder (ruOptions .getMeterName ().toString ())
@@ -852,7 +868,8 @@ private void recordStoreResponseStatistics(
852
868
CosmosMeterOptions latencyOptions = clientAccessor .getMeterOptions (
853
869
client ,
854
870
CosmosMetricName .REQUEST_SUMMARY_DIRECT_LATENCY );
855
- if (latencyOptions .isEnabled ()) {
871
+ if (latencyOptions .isEnabled () &&
872
+ (!latencyOptions .isDiagnosticThresholdsFilteringEnabled () || ctx .isThresholdViolated ())) {
856
873
Duration latency = responseStatistics .getDuration ();
857
874
if (latency != null ) {
858
875
Timer requestLatencyMeter = Timer
@@ -870,7 +887,8 @@ private void recordStoreResponseStatistics(
870
887
CosmosMeterOptions reqOptions = clientAccessor .getMeterOptions (
871
888
client ,
872
889
CosmosMetricName .REQUEST_SUMMARY_DIRECT_REQUESTS );
873
- if (reqOptions .isEnabled ()) {
890
+ if (reqOptions .isEnabled () &&
891
+ (!reqOptions .isDiagnosticThresholdsFilteringEnabled () || ctx .isThresholdViolated ())) {
874
892
Counter requestCounter = Counter
875
893
.builder (reqOptions .getMeterName ().toString ())
876
894
.baseUnit ("requests" )
@@ -882,12 +900,14 @@ private void recordStoreResponseStatistics(
882
900
883
901
if (this .metricCategories .contains (MetricCategory .RequestDetails )) {
884
902
recordRequestTimeline (
903
+ ctx ,
885
904
client ,
886
905
CosmosMetricName .REQUEST_DETAILS_DIRECT_TIMELINE ,
887
906
storeResponseDiagnostics .getRequestTimeline (), requestTags );
888
907
}
889
908
890
909
recordRequestPayloadSizes (
910
+ ctx ,
891
911
client ,
892
912
storeResponseDiagnostics .getRequestPayloadLength (),
893
913
storeResponseDiagnostics .getResponsePayloadLength ()
@@ -901,6 +921,7 @@ private void recordStoreResponseStatistics(
901
921
}
902
922
903
923
private void recordGatewayStatistics (
924
+ CosmosDiagnosticsContext ctx ,
904
925
CosmosAsyncClient client ,
905
926
Duration latency ,
906
927
ClientSideRequestStatistics .GatewayStatistics gatewayStatistics ) {
@@ -930,7 +951,8 @@ private void recordGatewayStatistics(
930
951
CosmosMeterOptions reqOptions = clientAccessor .getMeterOptions (
931
952
client ,
932
953
CosmosMetricName .REQUEST_SUMMARY_GATEWAY_REQUESTS );
933
- if (reqOptions .isEnabled ()) {
954
+ if (reqOptions .isEnabled () &&
955
+ (!reqOptions .isDiagnosticThresholdsFilteringEnabled () || ctx .isThresholdViolated ())) {
934
956
Counter requestCounter = Counter
935
957
.builder (reqOptions .getMeterName ().toString ())
936
958
.baseUnit ("requests" )
@@ -943,7 +965,8 @@ private void recordGatewayStatistics(
943
965
CosmosMeterOptions ruOptions = clientAccessor .getMeterOptions (
944
966
client ,
945
967
CosmosMetricName .REQUEST_SUMMARY_GATEWAY_REQUEST_CHARGE );
946
- if (ruOptions .isEnabled ()) {
968
+ if (ruOptions .isEnabled () &&
969
+ (!ruOptions .isDiagnosticThresholdsFilteringEnabled () || ctx .isThresholdViolated ())) {
947
970
double requestCharge = gatewayStatistics .getRequestCharge ();
948
971
DistributionSummary requestChargeMeter = DistributionSummary
949
972
.builder (ruOptions .getMeterName ().toString ())
@@ -961,7 +984,8 @@ private void recordGatewayStatistics(
961
984
CosmosMeterOptions latencyOptions = clientAccessor .getMeterOptions (
962
985
client ,
963
986
CosmosMetricName .REQUEST_SUMMARY_GATEWAY_LATENCY );
964
- if (latencyOptions .isEnabled ()) {
987
+ if (latencyOptions .isEnabled () &&
988
+ (!latencyOptions .isDiagnosticThresholdsFilteringEnabled () || ctx .isThresholdViolated ())) {
965
989
Timer requestLatencyMeter = Timer
966
990
.builder (latencyOptions .getMeterName ().toString ())
967
991
.description ("Gateway Request latency" )
@@ -975,12 +999,14 @@ private void recordGatewayStatistics(
975
999
}
976
1000
977
1001
recordRequestTimeline (
1002
+ ctx ,
978
1003
client ,
979
1004
CosmosMetricName .REQUEST_DETAILS_GATEWAY_TIMELINE ,
980
1005
gatewayStatistics .getRequestTimeline (), requestTags );
981
1006
}
982
1007
983
1008
private void recordAddressResolutionStatistics (
1009
+ CosmosDiagnosticsContext ctx ,
984
1010
CosmosAsyncClient client ,
985
1011
Map <String , ClientSideRequestStatistics .AddressResolutionStatistics > addressResolutionStatisticsMap ) {
986
1012
@@ -1019,7 +1045,8 @@ private void recordAddressResolutionStatistics(
1019
1045
CosmosMeterOptions latencyOptions = clientAccessor .getMeterOptions (
1020
1046
client ,
1021
1047
CosmosMetricName .DIRECT_ADDRESS_RESOLUTION_LATENCY );
1022
- if (latencyOptions .isEnabled ()) {
1048
+ if (latencyOptions .isEnabled () &&
1049
+ (!latencyOptions .isDiagnosticThresholdsFilteringEnabled () || ctx .isThresholdViolated ())) {
1023
1050
Timer addressResolutionLatencyMeter = Timer
1024
1051
.builder (latencyOptions .getMeterName ().toString ())
1025
1052
.description ("Address resolution latency" )
@@ -1034,7 +1061,8 @@ private void recordAddressResolutionStatistics(
1034
1061
CosmosMeterOptions reqOptions = clientAccessor .getMeterOptions (
1035
1062
client ,
1036
1063
CosmosMetricName .DIRECT_ADDRESS_RESOLUTION_REQUESTS );
1037
- if (reqOptions .isEnabled ()) {
1064
+ if (reqOptions .isEnabled () &&
1065
+ (!reqOptions .isDiagnosticThresholdsFilteringEnabled () || ctx .isThresholdViolated ())) {
1038
1066
Counter requestCounter = Counter
1039
1067
.builder (reqOptions .getMeterName ().toString ())
1040
1068
.baseUnit ("requests" )
0 commit comments