Uploaded image for project: 'Oozie'
  1. Oozie
  2. OOZIE-1378

EL function coord:tzOffset doesn't consider DST correctly

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Duplicate
    • trunk, 3.3.2
    • 4.1.0
    • None
    • None

    Description

      Email communications from Paul Chavez.

      From: Paul Chavez <pchavez@verticalsearchworks.com>
      To: "user@oozie.apache.org" <user@oozie.apache.org>
      Sent: Tuesday, May 14, 2013 10:23 AM
      Subject: tzOffset() not working as expected

      It seems the tzOffset() function is not accounting for DST. I am in Pacific Daylight Saving Time right now, which is a -7 offset from UTC. However, a coordinator configured to use tzOffset to calculate localtime paths and date strings is returning offsets of -8, which is the Standard Time offset.

      Below is a test coordinator I put together for debugging purposes along with dryrun output showing that it's offsetting by -8 hours. Can someone please verify if the tzOffset() function is supposed to be accounting for time changes?

      Thank you,
      Paul Chavez

      Relevant part of coordinator XML, I'm trying to get both the Current hour (local) when the coordinator triggers, as well as the Previous hour. The coordinator was submitted with a start date of 5pm UTC which is currently 10am Pacific Daylight Time.

      <coordinator-app xmlns="uri:oozie:coordinator:0.1" name="Test tzOffset" frequency="60" start="2013-05-14T17:00Z" end="2013-11-01T08:30Z" timezone="UTC" freq_timeunit="MINUTE" end_of_duration="NONE">
      <input-events>
      <data-in name="CurrentHourLogs" dataset="LogPath">
      <dataset name="LogPath" frequency="60" initial-instance="2013-04-27T07:00Z" timezone="America/Los_Angeles" freq_timeunit="MINUTE" end_of_duration="NONE">
      <uri-template>hdfs://nameservice1/logs/datekey=${YEAR}${MONTH}${DAY}/hour=${HOUR}</uri-template>
      <done-flag />
      </dataset>
      <instance>${coord:current(coord:tzOffset()/60)}</instance>
      </data-in>
      </input-events>
      <output-events>
      <data-out name="CurrentHour" dataset="IntHour">
      <dataset name="IntHour" frequency="60" initial-instance="2013-05-09T00:00Z" timezone="America/Los_Angeles" freq_timeunit="MINUTE" end_of_duration="NONE">
      <uri-template>${HOUR}</uri-template>
      </dataset>
      <instance>${coord:current(coord:tzOffset()/60)}</instance>
      </data-out>
      <data-out name="CurrentDay" dataset="IntDay">
      <dataset name="IntDay" frequency="60" initial-instance="2013-05-09T00:00Z" timezone="America/Los_Angeles" freq_timeunit="MINUTE" end_of_duration="NONE">
      <uri-template>${YEAR}${MONTH}${DAY}</uri-template>
      </dataset>
      <instance>${coord:current(coord:tzOffset()/60)}</instance>
      </data-out>
      <data-out name="PreviousHour" dataset="IntHour">
      <dataset name="IntHour" frequency="60" initial-instance="2013-05-09T00:00Z" timezone="America/Los_Angeles" freq_timeunit="MINUTE" end_of_duration="NONE">
      <uri-template>${HOUR}</uri-template>
      </dataset>
      <instance>${coord:current((coord:tzOffset()/60)-1)}</instance>
      </data-out>
      <data-out name="PreviousDay" dataset="IntDay">
      <dataset name="IntDay" frequency="60" initial-instance="2013-05-09T00:00Z" timezone="America/Los_Angeles" freq_timeunit="MINUTE" end_of_duration="NONE">
      <uri-template>${YEAR}${MONTH}${DAY}</uri-template>
      </dataset>
      <instance>${coord:current((coord:tzOffset()/60)-1)}</instance>
      </data-out>
      </output-events>

      Dryrun output, expecting CurrentHour to be 10 and PreviousHour to be 09:

      coordAction instance: 1:
      <coordinator-app xmlns="uri:oozie:coordinator:0.1" name="Test tzOffset" frequency="60" timezone="UTC" freq_timeunit="MINUTE" end_of_duration="NONE" instance-number="1" action-nominal-time="2013-05-14T17:00Z" action-actual-time="2013-05-14T17:14Z">
      <input-events>
      <data-in name="CurrentHourLogs" dataset="LogPath">
      <uris>hdfs://nameservice1/logs/datekey=20130514/hour=09</uris>
      <dataset name="LogPath" frequency="60" initial-instance="2013-04-27T07:00Z" timezone="America/Los_Angeles" freq_timeunit="MINUTE" end_of_duration="NONE">
      <uri-template>hdfs://nameservice1/logs/datekey=${YEAR}${MONTH}${DAY}/hour=${HOUR}</uri-template>
      <done-flag />
      </dataset>
      </data-in>
      </input-events>
      <output-events>
      <data-out name="CurrentHour" dataset="IntHour">
      <uris>09</uris>
      <dataset name="IntHour" frequency="60" initial-instance="2013-05-09T00:00Z" timezone="America/Los_Angeles" freq_timeunit="MINUTE" end_of_duration="NONE">
      <uri-template>${HOUR}</uri-template>
      </dataset>
      </data-out>
      <data-out name="CurrentDay" dataset="IntDay">
      <uris>20130514</uris>
      <dataset name="IntDay" frequency="60" initial-instance="2013-05-09T00:00Z" timezone="America/Los_Angeles" freq_timeunit="MINUTE" end_of_duration="NONE">
      <uri-template>${YEAR}${MONTH}${DAY}</uri-template>
      </dataset>
      </data-out>
      <data-out name="PreviousHour" dataset="IntHour">
      <uris>08</uris>
      <dataset name="IntHour" frequency="60" initial-instance="2013-05-09T00:00Z" timezone="America/Los_Angeles" freq_timeunit="MINUTE" end_of_duration="NONE">
      <uri-template>${HOUR}</uri-template>
      </dataset>
      </data-out>
      <data-out name="PreviousDay" dataset="IntDay">
      <uris>20130514</uris>
      <dataset name="IntDay" frequency="60" initial-instance="2013-05-09T00:00Z" timezone="America/Los_Angeles" freq_timeunit="MINUTE" end_of_duration="NONE">
      <uri-template>${YEAR}${MONTH}${DAY}</uri-template>
      </dataset>
      </data-out>
      </output-events>

      Attachments

        1. OOZIE-1378_v1.patch
          2 kB
          Mohammad Islam

        Issue Links

          Activity

            People

              kamrul Mohammad Islam
              kamrul Mohammad Islam
              Votes:
              1 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: