@@ -149,14 +149,7 @@ public TransportGetStackTracesAction(
149149 @ Override
150150 protected void doExecute (Task submitTask , GetStackTracesRequest request , ActionListener <GetStackTracesResponse > submitListener ) {
151151 licenseChecker .requireSupportedLicense ();
152- GetStackTracesResponseBuilder responseBuilder = new GetStackTracesResponseBuilder ();
153- responseBuilder .setRequestedDuration (request .getRequestedDuration ());
154- responseBuilder .setAwsCostFactor (request .getAwsCostFactor ());
155- responseBuilder .setCustomCO2PerKWH (request .getCustomCO2PerKWH ());
156- responseBuilder .setCustomDatacenterPUE (request .getCustomDatacenterPUE ());
157- responseBuilder .setCustomPerCoreWattX86 (request .getCustomPerCoreWattX86 ());
158- responseBuilder .setCustomPerCoreWattARM64 (request .getCustomPerCoreWattARM64 ());
159- responseBuilder .setCustomCostPerCoreHour (request .getCustomCostPerCoreHour ());
152+ GetStackTracesResponseBuilder responseBuilder = new GetStackTracesResponseBuilder (request );
160153 Client client = new ParentTaskAssigningClient (this .nodeClient , transportService .getLocalNode (), submitTask );
161154 if (request .getIndices () == null ) {
162155 searchProfilingEvents (submitTask , client , request , submitListener , responseBuilder );
@@ -413,8 +406,8 @@ private void retrieveStackTraces(
413406 List <Index > indices = resolver .resolve (clusterState , "profiling-stacktraces" , responseBuilder .getStart (), responseBuilder .getEnd ());
414407
415408 // Build a set of unique host IDs.
416- Set <String > uniqueHostIDs = new HashSet <>(responseBuilder .hostEventCounts .size ());
417- for (HostEventCount hec : responseBuilder .hostEventCounts ) {
409+ Set <String > uniqueHostIDs = new HashSet <>(responseBuilder .getHostEventCounts () .size ());
410+ for (HostEventCount hec : responseBuilder .getHostEventCounts () ) {
418411 uniqueHostIDs .add (hec .hostID );
419412 }
420413
@@ -557,21 +550,21 @@ public void calculateCO2AndCosts() {
557550 instanceTypeService ,
558551 hostMetadata ,
559552 responseBuilder .getRequestedDuration (),
560- responseBuilder .customCO2PerKWH ,
561- responseBuilder .customDatacenterPUE ,
562- responseBuilder .customPerCoreWattX86 ,
563- responseBuilder .customPerCoreWattARM64
553+ responseBuilder .getCustomCO2PerKWH () ,
554+ responseBuilder .getCustomDatacenterPUE () ,
555+ responseBuilder .getCustomPerCoreWattX86 () ,
556+ responseBuilder .getCustomPerCoreWattARM64 ()
564557 );
565558 CostCalculator costCalculator = new CostCalculator (
566559 instanceTypeService ,
567560 hostMetadata ,
568561 responseBuilder .getRequestedDuration (),
569- responseBuilder .awsCostFactor ,
570- responseBuilder .customCostPerCoreHour
562+ responseBuilder .getAWSCostFactor () ,
563+ responseBuilder .getCustomCostPerCoreHour ()
571564 );
572- Map <String , TraceEvent > events = responseBuilder .stackTraceEvents ;
565+ Map <String , TraceEvent > events = responseBuilder .getStackTraceEvents () ;
573566 List <String > missingStackTraces = new ArrayList <>();
574- for (HostEventCount hec : responseBuilder .hostEventCounts ) {
567+ for (HostEventCount hec : responseBuilder .getHostEventCounts () ) {
575568 TraceEvent event = events .get (hec .stacktraceID );
576569 if (event == null ) {
577570 // If this happens, hostEventsCounts and events are out of sync, which indicates a bug.
@@ -768,142 +761,5 @@ private void mget(Client client, List<Index> indices, List<String> slice, Action
768761 }
769762 }
770763
771- private static class GetStackTracesResponseBuilder {
772- private Map <String , StackTrace > stackTraces ;
773- private Instant start ;
774- private Instant end ;
775- private int totalFrames ;
776- private Map <String , StackFrame > stackFrames ;
777- private Map <String , String > executables ;
778- private Map <String , TraceEvent > stackTraceEvents ;
779- private List <HostEventCount > hostEventCounts ;
780- private double samplingRate ;
781- private long totalSamples ;
782- private Double requestedDuration ;
783- private Double awsCostFactor ;
784- private Double customCO2PerKWH ;
785- private Double customDatacenterPUE ;
786- private Double customPerCoreWattX86 ;
787- private Double customPerCoreWattARM64 ;
788- private Double customCostPerCoreHour ;
789-
790- public void setStackTraces (Map <String , StackTrace > stackTraces ) {
791- this .stackTraces = stackTraces ;
792- }
793-
794- public Instant getStart () {
795- return start ;
796- }
797-
798- public void setStart (Instant start ) {
799- this .start = start ;
800- }
801-
802- public Instant getEnd () {
803- return end ;
804- }
805-
806- public void setEnd (Instant end ) {
807- this .end = end ;
808- }
809-
810- public void setTotalFrames (int totalFrames ) {
811- this .totalFrames = totalFrames ;
812- }
813-
814- public void setStackFrames (Map <String , StackFrame > stackFrames ) {
815- this .stackFrames = stackFrames ;
816- }
817-
818- public void setExecutables (Map <String , String > executables ) {
819- this .executables = executables ;
820- }
821-
822- public void setStackTraceEvents (Map <String , TraceEvent > stackTraceEvents ) {
823- this .stackTraceEvents = stackTraceEvents ;
824- }
825-
826- public void setHostEventCounts (List <HostEventCount > hostEventCounts ) {
827- this .hostEventCounts = hostEventCounts ;
828- }
829-
830- public Map <String , TraceEvent > getStackTraceEvents () {
831- return stackTraceEvents ;
832- }
833-
834- public void setSamplingRate (double rate ) {
835- this .samplingRate = rate ;
836- }
837-
838- public double getSamplingRate () {
839- return samplingRate ;
840- }
841-
842- public void setRequestedDuration (Double requestedDuration ) {
843- this .requestedDuration = requestedDuration ;
844- }
845-
846- public double getRequestedDuration () {
847- if (requestedDuration != null ) {
848- return requestedDuration ;
849- }
850- // If "requested_duration" wasn't specified, we use the time range from the query response.
851- return end .getEpochSecond () - start .getEpochSecond ();
852- }
853-
854- public void setAwsCostFactor (Double awsCostFactor ) {
855- this .awsCostFactor = awsCostFactor ;
856- }
857-
858- public void setCustomCO2PerKWH (Double customCO2PerKWH ) {
859- this .customCO2PerKWH = customCO2PerKWH ;
860- }
861-
862- public void setCustomDatacenterPUE (Double customDatacenterPUE ) {
863- this .customDatacenterPUE = customDatacenterPUE ;
864- }
865-
866- public void setCustomPerCoreWattX86 (Double customPerCoreWattX86 ) {
867- this .customPerCoreWattX86 = customPerCoreWattX86 ;
868- }
869-
870- public void setCustomPerCoreWattARM64 (Double customPerCoreWattARM64 ) {
871- this .customPerCoreWattARM64 = customPerCoreWattARM64 ;
872- }
873-
874- public void setCustomCostPerCoreHour (Double customCostPerCoreHour ) {
875- this .customCostPerCoreHour = customCostPerCoreHour ;
876- }
877-
878- public void setTotalSamples (long totalSamples ) {
879- this .totalSamples = totalSamples ;
880- }
881-
882- public GetStackTracesResponse build () {
883- // Merge the TraceEvent data into the StackTraces.
884- if (stackTraces != null ) {
885- for (Map .Entry <String , StackTrace > entry : stackTraces .entrySet ()) {
886- String stacktraceID = entry .getKey ();
887- TraceEvent event = stackTraceEvents .get (stacktraceID );
888- if (event != null ) {
889- StackTrace stackTrace = entry .getValue ();
890- stackTrace .count = event .count ;
891- stackTrace .annualCO2Tons = event .annualCO2Tons ;
892- stackTrace .annualCostsUSD = event .annualCostsUSD ;
893- }
894- }
895- }
896- return new GetStackTracesResponse (
897- stackTraces ,
898- stackFrames ,
899- executables ,
900- stackTraceEvents ,
901- totalFrames ,
902- samplingRate ,
903- totalSamples
904- );
905- }
906- }
907-
908764 record HostEventCount (String hostID , String stacktraceID , int count ) {}
909765}
0 commit comments