Once there is a network error, and a bot has multiple weight class to upload, the roborumble client will save current battle result for each weight class it fails to upload, duplicating results file by a factor of 2 or more, resulting huge (a few GBs) battle results file until it crashes.
Below is a patch that could fix this issue:
diff --git a/robocode.roborumble/src/main/java/net/sf/robocode/roborumble/netengine/ResultsUpload.java b/robocode.roborumble/src/main/java/net/sf/robocode/roborumble/netengine/ResultsUpload.java index bac655a0..fff0b62d 100644 --- a/robocode.roborumble/src/main/java/net/sf/robocode/roborumble/netengine/ResultsUpload.java +++ b/robocode.roborumble/src/main/java/net/sf/robocode/roborumble/netengine/ResultsUpload.java @@ -180,29 +180,33 @@ public class ResultsUpload { String data = "game=" + game + commonData; + boolean errsaved = false; + if (matchtype.equals("GENERAL") || matchtype.equals("SERVER")) { - errorsfound = errorsfound | senddata(game, data, outtxt, true, results, i, battlesnum, prioritybattles); + errsaved = senddata(game, data, outtxt, true, results, i, battlesnum, prioritybattles); } if (sizesfile.length() != 0) { // upload also related competitions if (minibots.length() != 0 && !matchtype.equals("NANO") && !matchtype.equals("MICRO") && size.checkCompetitorsForSize(first[0], second[0], 1500)) { data = "game=" + minibots + commonData; - errorsfound = errorsfound - | senddata(minibots, data, outtxt, true, results, i, battlesnum, prioritybattles); + errsaved = errsaved + | senddata(minibots, data, outtxt, !errsaved, results, i, battlesnum, prioritybattles); } if (microbots.length() != 0 && !matchtype.equals("NANO") && size.checkCompetitorsForSize(first[0], second[0], 750)) { data = "game=" + microbots + commonData; - errorsfound = errorsfound - | senddata(microbots, data, outtxt, true, results, i, battlesnum, prioritybattles); + errsaved = errsaved + | senddata(microbots, data, outtxt, !errsaved, results, i, battlesnum, prioritybattles); } if (nanobots.length() != 0 && size.checkCompetitorsForSize(first[0], second[0], 250)) { data = "game=" + nanobots + commonData; - errorsfound = errorsfound - | senddata(nanobots, data, outtxt, true, results, i, battlesnum, prioritybattles); + errsaved = errsaved + | senddata(nanobots, data, outtxt, !errsaved, results, i, battlesnum, prioritybattles); } } + + errorsfound = errorsfound || errsaved; }
Thank you for the fix. I have included it for version 1.9.3.3. :-)
Thanks for the fast responding ;)
Btw, as soon as 1.9.3.3 releases, we could start evaluating and move literumble & roborumble clients to the latest version ;) By far, the literumble accepted version is 1.9.2.5 ;(