[ 
http://opencast.jira.com/browse/MH-8948?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=32355#comment-32355
 ] 

John King edited comment on MH-8948 at 11/29/12 10:48 PM:
----------------------------------------------------------

I'm going to have to bail on this one as the time zone logic involved is too 
tangled for me to fix in a reliable way in a reasonable amount of time.

The proximal cause of this bug is on lines 626 to 628 of oc.scheduler.js in the 
method sched.checkForConflictingEvents.  
        if(sched.timezone == ''){
          return false;
        }

Note that this logic is only invoked if one is scheduling a group of recordings 
not a single recording.  This aspect, in and of itself, is a flaw.  The bigger 
flaw is that the lines mean that the method returns without ever asking the 
server if there are any conflicts.  That means the group of recordings will be 
scheduled even though there may well be conflicts as the flag 
sched.conflictingEvents will never be set to true.

The fundamental cause is a misconfigured or, in my case, unconfigured 
demo_capture_agent.  I had been using the demo_capture_agent without ever 
having built the maven "capture" profile on my dev machine.  That meant that 
the default properties were never set on this agent and, hence, there was no 
timezone config info returned from the the below call in handleAgentChange().  
Actually, no config info at all is returned in this case from 
$.get('/capture-admin/agents/' + agent + '/configuration.xml'.

For any agent that has been setup and configured correctly, this bug would not 
occur.  Still, I think it would be a good idea for the code to refuse to 
schedule anything if the agent timezone is unknown.  There is a cryptic comment 
on line 430, in the handleAgentChange() method: 
delete sched.dublinCore.components.agentTimeZone; //Being empty will end up 
defaulting to the server's Timezone.
However, I don't see when this would take effect in downstream logic.  The REST 
endpoint method for finding conflicts 
ScheduleRestService.getConflictinEventsJSON() claims the timezone param is 
optional but the method actually returns an error if it is missing.  This is 
probably why the  if(sched.timezone == '') check was put in,

So, I think the correct fix would be to refuse to schedule anything if the 
timezone for the agent is unknown. After all, the scheduling admin server could 
be in a different timezone from the agent being scheduled.  And the browser 
being used to set the schedule could even be in a third different timezone.  
That would mean using the client side JavaScript Date.getTimezoneOffset() 
method, which is used in several places in oc.scheduler.js, would be 
unreliable. However that policy might be too draconian, particularly for 
developers, such as myself, who use the demo_capture_agent without having 
caused it to be configured by building and running the maven capture profile.

The potential side effects of doing this are too difficult for me to patch the 
problem reliably without spending a lot more time on it which I don't have 
currently.  Perhaps another developer more familiar with the timezone 
ramifications could take a look at it.  

We should document the fact that the demo_capture_agent is not really usable 
unless the developer has run the requisite maven capture profile.  Note that, 
after I did that, I could also see the Agent Tools and Confidence Monitoring 
sections on the Matterhorn landing page on my machine.  I think we should 
recommend that all developers run that profile at least once to setup the 
demo_capture_agent correctly.

Note also that it is easy to determine if the demo_capture_agent has been 
configured by going to the Capture Agents tab in the Admin UI.  If is has been 
configured correctly, you will see three "Mock" capabilities; if it has not, 
you will see no capabilities.  If the capabilities are there, the timezone data 
will also be present when GETting the agent configuation.xml.
                
      was (Author: johnk):
    I'm going to have to bail on this one as the time zone logic involved is 
too tangled for me to fix in a reliable way in a reasonable amount of time.

The proximal cause of this bug is on lines 626 to 628 of oc.scheduler.js in the 
method sched.checkForConflictingEvents.  
        if(sched.timezone == ''){
          return false;
        }

Note that this logic is only invoked if one is scheduling a group of recordings 
not a single recording.  This aspect, in and of itself, is a flaw.  The bigger 
flaw is that the lines mean that the method returns without ever asking the 
server if there are any conflicts.  That means the group of recordings will be 
scheduled even though there may well be conflicts as the flag 
sched.conflictingEvents will never be set to true.

The fundamental cause is a misconfigured or, in my case, unconfigured 
demo_capture_agent.  I had been using the demo_capture_agent without ever 
having built the maven "capture" profile on my dev machine.  That meant that 
the default properties were never set on this agent and, hence, there was no 
timezone config info returned from the the below call in handleAgentChange().  
Actually, no config info at all is returned in this case from 
$.get('/capture-admin/agents/' + agent + '/configuration.xml'.

For any agent that has been setup and configured correctly, this bug would not 
occur.  Still, I think it would be a good idea for the code to refuse to 
schedule anything if the agent timezone is unknown.  There is a cryptic comment 
on line 430, in the handleAgentChange() method: 
delete sched.dublinCore.components.agentTimeZone; //Being empty will end up 
defaulting to the server's Timezone.
However, I don't see when this would take effect in downstream logic.  The REST 
endpoint method for finding conflicts 
ScheduleRestService.getConflictinEventsJSON() claims the timezone param is 
optional but the method actually returns an error if it is missing.  This is 
probably why the  if(sched.timezone == '') check was put in,

So, I think the correct fix would be to refuse to schedule anything if the 
timezone for the agent is unknown. After all, the scheduling admin server could 
be in a different timezone from the agent being scheduled.   However that 
policy might be too draconian, particularly for developers, such as myself, who 
use the demo_capture_agent without having caused it to be configured by 
building and running the maven capture profile.

The potential side effects of doing this are too difficult for me to patch the 
problem reliably without spending a lot more time on it which I don't have 
currently.  Perhaps another developer more familiar with the timezone 
ramifications could take a look at it.  

We should document the fact that the demo_capture_agent is not really usable 
unless the developer has run the requisite maven capture profile.  Note that, 
after I did that, I could also see the Agent Tools and Confidence Monitoring 
sections on the Matterhorn landing page on my machine.  I think we should 
recommend that all developers run that profile at least once to setup the 
demo_capture_agent correctly.

Note that it is easy to determine if the demo_capture_agent has been configured 
by going to the Capture Agents tab in the Admin UI.  If is has been configured 
correctly, you will see the "Mock" capabilities; if it has not, you will see no 
capabilities.  If the capabilities are there, the timezone data will also be 
present when GETting the agent configuation.xml.
                  
> Scheduling a series recording does not detect a conflict if a recording is 
> completely within the time span of an existing recording.
> ------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: MH-8948
>                 URL: http://opencast.jira.com/browse/MH-8948
>             Project: Matterhorn Project
>          Issue Type: Bug
>          Components: Administrative Tools
>    Affects Versions: 1.3.1
>            Reporter: Jonathan Felder
>            Assignee: John King
>             Fix For: 1.4
>
>


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
http://opencast.jira.com/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        
_______________________________________________
Matterhorn mailing list
[email protected]
http://lists.opencastproject.org/mailman/listinfo/matterhorn


To unsubscribe please email
[email protected]
_______________________________________________

Reply via email to