#!/bin/bash exec $TIVO_ROOT/tvbin/tivosh << "EOF" # Rubbish up to 2000 cast objects, set ThumbsLogMagicNumber. source $tcl_library/tv/mfslib.tcl proc getCallId {} { set callfp [ open /var/persist/lastCallId "r" ] gets $callfp lhs close $callfp return $lhs } proc svclog {name msg now callId} { global env set fd [open $Inc::TC_SVC_LOG_FILE "a"] set tcdId $env(SerialNumber) putlog "$name $msg" puts $fd "runme_${name} TCD_ID=$tcdId CALL_ID=$callId TIME=$now $msg" close $fd } proc AddMsg { msg } { global vMsgG lappend vMsgG $msg } proc RubbishCast {dir tag} { global nMaxIterG global nTotalIterG global dbG set nDel 0 set nErr 0 if { $nTotalIterG >= $nMaxIterG } { return } ForeachMfsFile id name type $dir "" { incr nTotalIterG 1 try { RetryTransaction { dbobj [db $dbG openid $id] markasrubbish } incr nDel } catch err { incr nErr } if { $nTotalIterG % 500 == 0 } { putlog "$tag nTotalIter=$nTotalIterG" } if { $nTotalIterG >= $nMaxIterG } { break } } if { $nDel > 0 } { AddMsg "nDel$tag=$nDel" } if { $nErr > 0 } { AddMsg "nErr$tag=$nErr" } } proc ReadMagicNumberFromHServer {} { set hdr "THUMBS_LOG_MAGIC_NUMBER" set fp [open "/var/tmp/HServer.recv" r] while { [gets $fp line] >= 0 } { foreach {key value} [split $line =] { if { ![string compare $key $hdr] } { return $value } } } error "NoMagicNumberFound" } proc StoreThumbsLogMagicNumber {db number} { RetryTransaction { set armConfig [db $db open /State/ArmConfig] dbobj $armConfig set ThumbsLogMagicNumber $number } return "Magic=$number" } set nameG "manageThumbs" putlog "Start $argv0" set vMsgG "" set nowG [clock seconds] set dbG [dbopen] set cIdG "" if [catch {getCallId} cIdG] { set cIdG UNKNOWN } set prefDir "/Preference/a" set nMaxIterG 2000 set nTotalIterG 0 RubbishCast $prefDir/17 PrefActor RubbishCast $prefDir/19 PrefDirector RubbishCast $prefDir/22 PrefWriter RubbishCast /Person/8 PersonActor RubbishCast /Person/9 PersonDirector RubbishCast /Person/12 PersonWriter catch {StoreThumbsLogMagicNumber $dbG [ReadMagicNumberFromHServer]} msg AddMsg $msg svclog $nameG $vMsgG $nowG $cIdG dbclose $dbG putlog "Finish $argv0" EOF