[mythtv-commits] Ticket #10533: Optimize scheduler for duplicate checking and EIT updates

MythTV noreply at mythtv.org
Sat Mar 31 18:14:04 UTC 2012

#10533: Optimize scheduler for duplicate checking and EIT updates
     Reporter:  gigem                |      Owner:  gigem
         Type:  Developer Task       |     Status:  new
     Priority:  minor                |  Milestone:  0.26
    Component:  MythTV - Scheduling  |    Version:  Unspecified
     Severity:  medium               |   Keywords:
Ticket locked:  0                    |
 This patch includes several scheduler changes.  I'll detail all of them
 when I commit it.  The two major ones are described below.  Please note
 that a small schema update must be done by hand and there is also a
 protocol change that is not yet advertised.  Be careful to not mix this
 test version with unpatched versions.

 As noted, a small schema update is needed.  To make that change, please
 run the following MySQL commands.

 alter table recordmatch add column findid int not null default 0;
 alter table recordmatch add index (recordid, findid);

 The first major change in this patch is the scheduler only rechecks
 matching programs for duplicates in recorded and oldrecorded if the status
 might have changed.  Previously, the scheduler rechecked all matched
 programs every time it ran.  Because checking the oldrecorded table can be
 expensive, this change should provide a big improvement.

 The second major change is the scheduler can be told to rematch and
 recheck only a portion of the program table.  This is intended for use
 with EIT where portions of the program table are updated frequently in an
 orderly manner.  This change should provide a big improvement in those
 cases.  Please note the EIT scanner has not been updated yet.  I hope
 Daniel will be able to do that, but if he can't, I will try myself.

 To test this patch, please run the following cases with and without the
 patch.  Wehn doing so, please save the "Reschedule requested for" and
 "Scheduled <n> items in" log lines from the master mythbackend and send
 them to me.

 Test 1.  Run "mythutil --resched".  This forces a complete reschedule.
 There shouldn't be any signifcant change between versions for this test.

 Test 2.  Go to the EPG in mythfrontend and choose a program not currently
 covered by a recording rule.  Press R/RECORD to create a new kSingleRecord
 rule.  After the scheduler runs and the EPG updates, press DELETE and then
 OK to delete the rule.  There should be a
 nocicable change between versions for this test.

 Test 3.  Go to ViewScheduled in mythfrontend and choose a program with a
 recurring rule that matches several programs and has many entries in
 oldrecorded.  Press E/EDIT to bring up the schedule editor.  Change the
 rule type, change it back and then press OK to "dirty" the rule and force
 an update.  There should be a big change between versions
 for this test.

 Test 4.  Run "mythutil --event 'RESCHEDULE_RECORDINGS' --event 'MATCH 0 0
 0 YYYY-MM-DDTHH:MM:SS'" and replace the date with the time 3 hours from
 the current time.  This simulates a reschedule caused by EIT where
 anything in the next 3 hours might have changed.  Please note this can't
 be run on the unpatched version as it is only supported the more coarse
 rescheduling covered by "mythutil --resched".

 Test 5.  Using mythutil, run other limited reschedules that might be
 requested by EIT.  The full syntax of the MATCH reschedule request is
 "MATCH <recordid> <sourceid> <mplexid> <maxstartttime>".  A non-zero value
 for <recordid>, <sourceid> or <mplexid> or a valid time for <maxstarttime>
 limits the reschedule to programs matching that criteria.

Ticket URL: <http://code.mythtv.org/trac/ticket/10533>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center

More information about the mythtv-commits mailing list