Menu

#395 Roborumble Client Duplicates Battle Results on Network Error

1.9.3.3
closed
RoboRumble (47)
9
2018-09-10
2018-07-08
Xor
No

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;
        }

Discussion

  • Flemming N. Larsen

    • labels: --> RoboRumble
    • assigned_to: Flemming N. Larsen
    • Group: Future Release --> 1.9.3.3
     
  • Flemming N. Larsen

    Thank you for the fix. I have included it for version 1.9.3.3. :-)

     
    • Xor

      Xor - 2018-07-13

      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 ;(

       
  • Flemming N. Larsen

    • status: open --> closed
     

Log in to post a comment.