Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8210142

java.util.Calendar.clone() doesn't respect sharedZone flag

    XMLWordPrintable

    Details

    • Subcomponent:
    • Resolved In Build:
      b11
    • CPU:
      x86_64
    • OS:
      windows_10

      Description

      A DESCRIPTION OF THE PROBLEM :
      While analizing a heapdump of Jenkins, i noticed a 1:1 relation between Calendar and TimeZone instances.
      Further research showed the source of the issue, all Calender instances are cloned before they are stored in private fields. The java.util.Calendar.clone() doesn't respect sharedZone flag and creates a clone of TimeZone even if sharedZone is true.
      This results in Calendar instances with sharedZone = true and a fresh copy of the TimeZone.



      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Run the provided source code


      ---------- BEGIN SOURCE ----------

          public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
              // we need reflection to show this, sorry ...
              Field zone = Calendar.class.getDeclaredField("zone");
              zone.setAccessible(true);
              Field sharedZone = Calendar.class.getDeclaredField("sharedZone");
              sharedZone.setAccessible(true);

              // create a new calendar with any date
              Calendar c = new GregorianCalendar();

              // c should have a shared zone
              if (sharedZone.getBoolean(c)) {
                  // get a clone of the date
                  Calendar c2 = (Calendar) c.clone();
                  
                  // c2 has a shared zone too
                  if (sharedZone.getBoolean(c2)) {
                      
                      // the original calendar and the clone should have the same zone now
                      if (zone.get(c) != zone.get(c2)) {
                          throw new IllegalStateException("Both calendars have a shared zone, it should be the identical one");
                      }
                  }
              }
          }

      ---------- END SOURCE ----------

      FREQUENCY : always


        Attachments

          Issue Links

            Activity

              People

              Assignee:
              naoto Naoto Sato
              Reporter:
              webbuggrp Webbug Group
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: