Skip to content

Jagger unable to save data from newer sessions #862

@Lhfvgbh

Description

@Lhfvgbh

Few last Jagger runs failed with an error because of session data were deleted by another Jagger results.

In KeyValue table column sessionId is varchar(255). Data erase was caused with sorting temporary jagger sessionIDs as a string instead of an integer.

We have a property chassis.storage.temporary.data.session.count=50 - max number of sessions to keep.

So after sessionID become more than 1000, builds were started to clear the latest data but not the old one because of string 999 bigger than 1000 or 10010.

Changing the type of field sessionId from string to integer should fix this problem.

Example of the error:

ERROR 12:57:40,452 [jagger-core-pool-55] ExceptionLogger | Exception occurred at thread jagger-core-pool-55
java.lang.NullPointerException
at com.griddynamics.jagger.engine.e1.services.DefaultDataService.getMetricsByTests(DefaultDataService.java:234)
at com.griddynamics.jagger.engine.e1.services.DefaultDataService.getMetrics(DefaultDataService.java:218)
at com.griddynamics.jagger.master.DecisionMakerDistributionListener.onTaskDistributionCompleted(DecisionMakerDistributionListener.java:81)
at com.griddynamics.jagger.master.CompositeDistributionListener.onTaskDistributionCompleted(CompositeDistributionListener.java:54)
at com.griddynamics.jagger.master.ListenableService$3$1.run(ListenableService.java:104)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
INFO 12:57:40,480 [Thread-1] Master | Temporary data for session 1091 deleted
INFO 12:57:40,481 [main] JaggerXmlApplicationContext | Closing com.griddynamics.jagger.util.JaggerXmlApplicationContext@4e2d3ac2: startup date [Thu Jul 18 11:05:08 UTC 2019]; root of context hierarchy
ERROR 12:57:40,485 [main] LaunchManager | Error during launch
java.lang.IllegalStateException: key start_time has not been saved during test execution
at com.griddynamics.jagger.engine.e1.aggregator.session.BasicAggregator.getFirst(BasicAggregator.java:133)
at com.griddynamics.jagger.engine.e1.aggregator.session.BasicAggregator.onSessionExecuted(BasicAggregator.java:101)
at com.griddynamics.jagger.master.Master.run(Master.java:259)
at com.griddynamics.jagger.JaggerLauncher.doLaunchMaster(JaggerLauncher.java:305)
at com.griddynamics.jagger.JaggerLauncher.doLaunchMaster(JaggerLauncher.java:313)
at com.griddynamics.jagger.JaggerLauncher.access$400(JaggerLauncher.java:70)
at com.griddynamics.jagger.JaggerLauncher$2.run(JaggerLauncher.java:197)
at com.griddynamics.jagger.launch.Launches$LaunchGroupTask.run(Launches.java:88)
at com.griddynamics.jagger.launch.LaunchManager$InternalRunner.run(LaunchManager.java:114)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

Example of sessionID sorting with sql request “select distinct k.sessionId from KeyValue k ORDER by k.sessionId;“ shows latest 50 IDs:
871
872
88
883
889
89
892
894
895
897
898
899
90
900
901
902
903
904
909
91
911
912
92
923
924
925
926
927
928
93
939
94
940
941
946
948
95
950
951
958
959
96
960
961
963
97
977
98
99
998

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions