Lexech / project-valerie

Automatically exported from code.google.com/p/project-valerie
0 stars 0 forks source link

Sync hängt / WebIF Fehler bei Sync-Einstellungen #605

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
What steps will reproduce the problem?
1. Per WebIF oder in der GUI einen sync anstossen
2. Per WebIF oder in der GUI die Sync-Settings bearbeiten wollen

What is the expected output? What do you see instead?
- Es sollte gesynct werden. Der Sync bleibt hängen bei "Lade Dateisystem"

- Der Aufruf des Menüs "Sync-Settings" im WebIF oder in der GUI geht nicht. 
Fehlermeldung siehe unten bzw. im Log

Revision? 1260 auf einer DM800HD se

Hallo,

ich wollte syncen, kam aber nicht weit. Die sync blieb bei "Lade Dateisystem" 
stehen.
Als ich im Webinterface in die Sync-Settings gehen wollte, kam folgende
Fehlermeldung:

---------------------

web.Server Traceback (most recent call last):

<type 'exceptions.TypeError'>: unhashable type: 'dict'
/usr/lib/python2.6/site-packages/twisted/web/server.py, line 150 in process
148    try:
149      resrc = self.site.getResourceFor(self)
150      self.render(resrc)
151    except:
Self
site    
twisted.web.server.Site instance @ 0x1f3a558 <twisted.web.server.Site instance 
at 0x1f3a558>
Locals
resrc   
Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_WebInterfaceExtras.core.WebMai
nActions.SyncSettings instance @ 0x1f3a198 
<Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_WebInterfaceExtras.core.WebMa
inActions.SyncSettings instance at 0x1f3a198>
self    
twisted.web.server.Request instance @ 0x2d32e760 <GET /syncSettings HTTP/1.1>
/usr/lib/python2.6/site-packages/twisted/web/server.py, line 157 in render
155  def render(self, resrc):
156    try:
157      body = resrc.render(self)
158    except UnsupportedMethod, e:
Locals
resrc   
Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_WebInterfaceExtras.core.WebMai
nActions.SyncSettings instance @ 0x1f3a198 
<Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_WebInterfaceExtras.core.WebMa
inActions.SyncSettings instance at 0x1f3a198>
self    
twisted.web.server.Request instance @ 0x2d32e760 <GET /syncSettings HTTP/1.1>
Globals
UnsupportedMethod   <class 'twisted.web.server.UnsupportedMethod'>
/usr/lib/python2.6/site-packages/twisted/web/resource.py, line 190 in render
188      from twisted.web.server import UnsupportedMethod
189      raise UnsupportedMethod(getattr(self, 'allowedMethods', ()))
190    return m(request)
191
Locals
m   <bound method SyncSettings.render_GET of 
<Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_WebInterfaceExtras.core.WebMa
inActions.SyncSettings instance at 0x1f3a198>>
self    
Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_WebInterfaceExtras.core.WebMai
nActions.SyncSettings instance @ 0x1f3a198 
<Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_WebInterfaceExtras.core.WebMa
inActions.SyncSettings instance at 0x1f3a198>
request 
twisted.web.server.Request instance @ 0x2d32e760 <GET /syncSettings HTTP/1.1>
/usr/lib/enigma2/python/Plugins/Extensions/ProjectValerie/DMC_Plugins/DMC_WebInt
erfaceExtras/core/WebMainActions.py, line 560 in render_GET
558class SyncSettings (Resource):
559        def render_GET(self, request):
560                return self.action(request)
561
Locals
self    
Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_WebInterfaceExtras.core.WebMai
nActions.SyncSettings instance @ 0x1f3a198 
<Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_WebInterfaceExtras.core.WebMa
inActions.SyncSettings instance at 0x1f3a198>
request 
twisted.web.server.Request instance @ 0x2d32e760 <GET /syncSettings HTTP/1.1>
Globals
SyncSettings    <class 
Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_WebInterfaceExtras.core.WebMai
nActions.SyncSettings at 0x1a227e0>
Resource    <class twisted.web.resource.Resource at 0x15d3bd0>
/usr/lib/enigma2/python/Plugins/Extensions/ProjectValerie/DMC_Plugins/DMC_WebInt
erfaceExtras/core/WebMainActions.py, line 572 in action
570                finalOutput = WebHelper().getHtmlCore("Options" , True, 
"Sync")
571
572                tableBody = self.buildTableSyncFileTypes("options.sync")
573                finalOutput = finalOutput.replace("<!-- 
CUSTOM_TBODY_SYNC_FILETYPES -->", tableBody)
Locals
finalOutput '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r\n<html 
xmlns="http://www.w3.org/1999/xhtml">\r\n<head>\r\n<title>Project 
Valerie</title>\r\n<meta http-equiv="Content-Type" content="text/html; 
charset=utf-8" />\r\n<link href="/content/global/css/main.css" rel="stylesheet" 
type="text/css" />\r\n<link href="/content/global/css/datatable.css" 
rel="stylesheet" type="text/css" />\r\n<link 
href="/content/global/css/themeroller.css" rel="stylesheet" type="text/css" 
/>\r\n<link rel="shortcut icon" type="/web-data/image/x-icon" 
href="/content/global/img/favicon.ico">\r\n</head>\r\n\r\n<body>\r\n\r\n<script 
src="/content/global/js/jquery.js" type="text/javascript"></script> \r\n<script 
src="/content/global/js/jquery.dataTables.min.js" 
type="text/javascript"></script> \r\n<script 
src="/content/global/js/jquery.themeRoller.min.js" 
type="text/javascript"></script>\r\n<script 
src="/content/global/js/jquery.progressbar.min.js" 
type="text/javascript"></script>\r\n<script src="/content/global/js/valerie.js" 
type="text/javascript"></script> \r\n\r\n<script>$(document).ready(function(){ 
\n\n\n});\n\n\nfunction testme() 
{\n$("tr:last").clone(true).insertAfter("tr:last");\n}\n</script>\r\n\r\n<div 
id="container">\r\n\t\r\n\t<div id="mainmenu"><div id="banner"><img 
alt="Dreambox Web" 
src="/content/global/img/dreamboxweb.png"></div>\r\n\r\n<ul>\r\n\t<li><a 
href="/">Home</a></li>\r\n\t<li><a href="/movies">Movies</a></li>\r\n\t<li><a 
href="/tvshows">TvShows</a></li>\r\n\t<li><a 
href="/failed">Failed</a></li>\r\n\t<li><a 
href="/sync">Sync</a></li>\t\r\n\t<li><a 
href="/options">Options</a></li>\r\n\t<li><a 
href="/extras">Extras</a></li>\r\n\t<li><a 
href="/logs">Logs</a></li>\r\n</ul>\r</div>\r\n\t\r\n\t<div 
id="submenu"><ul>\r\n\t<li><a href="/globalSettings">Global 
Settings</a></li>\r\n\t<li><a href="/syncSettings">Sync 
Settings</a></li>\r\n</ul>\r</div>\r\n\t\r\n\t<div id="content"><div 
class="textheader">Options</div>\t\n\t\n\t<div class="subheader">File 
Settings</div>\n\n\t<div class="text">\n\t\t<!-- CUSTOM_TBODY_SYNC_FILETYPES 
-->\n\t</div>\n\t\n\t<br><br>\n\n\t<div class="subheader">Add 
Path</div>\n\t\n\t<div class="text">\n\t\t<!-- CUSTOM_TBODY_SYNC_PATH_ADD 
-->\n\t</div>\n\t\n\t<br><br><br>\n\t\n\t<div class="subheader">Path Settings - 
Hint: If you want to delete a line, just delete content of directory and press 
"save".</div>\n\n\t<div class="text">\n\t\t<!-- CUSTOM_TBODY_SYNC_PATH 
-->\n\t</div>\n\t\n\n\t\n\n\n</div></div>\r\n\t\r\n</div>\t\r\n\r\n</body>\r\n</
html>\r'
self    
Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_WebInterfaceExtras.core.WebMai
nActions.SyncSettings instance @ 0x1f3a198 
<Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_WebInterfaceExtras.core.WebMa
inActions.SyncSettings instance at 0x1f3a198>
Globals
WebHelper   <class 
Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_WebInterfaceExtras.core.WebHel
per.WebHelper at 0x1a22660>
Options <class 
Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_WebInterfaceExtras.core.WebMai
nActions.Options at 0x1a22780>
Sync    <class 
Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_WebInterfaceExtras.core.WebMai
nActions.Sync at 0x1a22840>
/usr/lib/enigma2/python/Plugins/Extensions/ProjectValerie/DMC_Plugins/DMC_WebInt
erfaceExtras/core/WebMainActions.py, line 585 in buildTableSyncFileTypes
583        def buildTableSyncFileTypes(self, section):
584                tableBody = u""
585                pathsConfig = WebData().getData(section)
586
Locals
tableBody   u''
section 'options.sync'
self    
Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_WebInterfaceExtras.core.WebMai
nActions.SyncSettings instance @ 0x1f3a198 
<Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_WebInterfaceExtras.core.WebMa
inActions.SyncSettings instance at 0x1f3a198>
Globals
WebData <class 
Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_WebInterfaceExtras.core.WebDat
a.WebData at 0x1a22480>
/usr/lib/enigma2/python/Plugins/Extensions/ProjectValerie/DMC_Plugins/DMC_WebInt
erfaceExtras/core/WebData.py, line 88 in getData
86                elif type == "options.sync":
87                        from 
Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_SyncExtras.PathsConfig import 
PathsConfig
88                        dataRows = PathsConfig().getInstance()
89
Locals
type    'options.sync'
PathsConfig <class 
Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_SyncExtras.PathsConfig.PathsCo
nfig at 0x1adbba0>
dataRows    
List instance @ 0x2d351288
/usr/lib/enigma2/python/Plugins/Extensions/ProjectValerie/DMC_Plugins/DMC_SyncEx
tras/PathsConfig.py, line 29 in getInstance
27                if gInstance is None:
28                        printl("Creating new instance", self)
29                        self.load()
30                        gInstance = self
Locals
self    
Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_SyncExtras.PathsConfig.PathsCo
nfig instance @ 0x2d351670 
<Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_SyncExtras.PathsConfig.PathsC
onfig instance at 0x2d351670>
Globals
gInstance   None
printl  
function printl2 in file 
/usr/lib/enigma2/python/Plugins/Extensions/ProjectValerie/__common__.py at line 
36
/usr/lib/enigma2/python/Plugins/Extensions/ProjectValerie/DMC_Plugins/DMC_SyncEx
tras/PathsConfig.py, line 51 in load
49
50                # making sure that no duplicates exist
51                self._dict["xml"]["filetypes"]["filetype"] = 
list(set(self._dict["xml"]["filetypes"]["filetype"]))
52
Self
_dict   
Dictionary instance @ 0x2d357ed0
u'xml'  
Dictionary instance @ 0x2d357e40
u'searchpaths'  
Dictionary instance @ 0x2d357d20
u'searchpath'   
List instance @ 0x2d32e5d0
Dictionary instance @ 0x2d3509c0
u'directory'    u'/media/net/Filme/'
u'enabled'  True
u'usefolder'    False
u'type' u'MOVIE'
Dictionary instance @ 0x2d357c90
u'directory'    u'/media/net/Serien/'
u'enabled'  True
u'usefolder'    False
u'type' u'TV'
Dictionary instance @ 0x2d357db0
u'directory'    u'/media/hdd/'
u'enabled'  True
u'usefolder'    False
u'type' u'MOVIE_AND_TV'
u'filetypes'    
Dictionary instance @ 0x2d350c90
u'filetype' 
List instance @ 0x2d34da58
Dictionary instance @ 0x2d352300
u'ts'
u'mkv'
u'mp4'
u'iso'
u'avi'
u'm2ts'
u'ifo'
Locals
self    
Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_SyncExtras.PathsConfig.PathsCo
nfig instance @ 0x2d351670 
<Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_SyncExtras.PathsConfig.PathsC
onfig instance at 0x2d351670>

<type 'exceptions.TypeError'>: unhashable type: 'dict'

------------------------

Selbst eine Neuinstallation des Plugins brachte nichts.

Irgendwas scheint mit der Paths.xml nicht zu stimmen. 
Also die vorhandene Paths.xml gelöscht, den Pfad für den Ordner "valerie" wo 
anders hin gelegt, Neustart der Dreambox,
die dann im neuen Pfad erstellte Paths.xml an den ursprünglichen Ort 
zurückkopiert, Box neugestartet, den Pfad wieder 
zurückgeändert & nochmal neu gestartet, und siehe da, der Fehler im 
Webinterface ist weg. Nun noch die Pfade in den Sync-Settings 
angepasst und gesynct, was ebenfalls funktionierte. 

Allerdings war die ganze Sache nach einem Neustart der Dreambox wieder 
hinfällig. Die Sync bleibt wieder hängen und der Fehler 
im Webinterface ist auch wieder da.

Könnt Ihr helfen?

Das Enigma-Crash Log & Valerie Log sind angehangen.

Danke und GRuss,

Jens

Original issue reported on code.google.com by jedis...@googlemail.com on 14 Sep 2012 at 9:19

Attachments:

GoogleCodeExporter commented 8 years ago
Hier noch meine Paths.xml

Original comment by jedis...@googlemail.com on 14 Sep 2012 at 9:26

Attachments:

GoogleCodeExporter commented 8 years ago
Hi Jens,

nur so in's Blaue geschossen: Du hast da einen "leeren" Eintrag bei den 
Filetypes in Deiner paths.xml. Das schaut komisch aus. Kannst Du diese beiden 
Zeilen mal testhalber löschen

    <filetype>
    </filetype>

und dann nochmal testen? Ggf. E2 neu starten, nachdem die Einträge 
rausgenommen wurden... Interessant wäre auch, wann genau dieser Eintrag 
reinkam... Was genau hast Du denn im WebIF bei den Sync-Options in die Zeile 
"Filetypes" eingetragen?

Danke & Gruß, Erik

Original comment by erik.for...@gmail.com on 14 Sep 2012 at 9:55

GoogleCodeExporter commented 8 years ago
Hallo Erik,

hmmm... manuell hab ich da eigentlich nix gemacht....
Ich hab die Zeile jetzt mal gelöscht und hab's getestet. 
Momentan läuft ein Sync. In's Sync-Settings Menü bin ich übers
WebIF auch reingekommen.

Sieht gut aus :-)

Danke Dir erstmal. Sollte noch was sein, melde ich mich wieder.

Schönes Wochenende noch,

Jens

Original comment by jedis...@googlemail.com on 14 Sep 2012 at 10:13

GoogleCodeExporter commented 8 years ago
Hi Jens,

ich gehe mal davon aus, dass die Zeile durch irgendeine Aktion, die Du im WebIF 
gemacht hast, reinkommt. Aber lass uns erstmal testen, ob der Sync nun auch 
wirklich komplett durchläuft. Wenn ja, können wir versuchen, der wahren 
Ursache auf die Schliche zu kommen... :-)

Gruß, Erik 

Original comment by erik.for...@gmail.com on 14 Sep 2012 at 10:19

GoogleCodeExporter commented 8 years ago
Ok, ich meld mich, wenn der Sync durch ist.

Gruss,
Jens

Original comment by jedis...@googlemail.com on 14 Sep 2012 at 10:21

GoogleCodeExporter commented 8 years ago
Sync ist durch ohne Probleme.

Original comment by jedis...@googlemail.com on 14 Sep 2012 at 10:37

GoogleCodeExporter commented 8 years ago
Hi Jens,

schön, dass das Problem erstmal behoben ist... Interessieren würde mich 
natürlich trotzdem, wo dieser falsche Eintrag herkam... :-( In Deiner ersten 
Beschreibung hattest Du erwähnt, dass Du in den Sync-Settings die Pfade 
geändert hast. Das war über's WebIF, oder? 

> Nun noch die Pfade in den Sync-Settings 
> angepasst und gesynct, was ebenfalls funktionierte. 

Gruß, Erik

Original comment by erik.for...@gmail.com on 15 Sep 2012 at 6:19

GoogleCodeExporter commented 8 years ago
Hallo Erik,

das war über's WebIF. Es hat ja 1x funktioniert, wenn man:

Im WebIF den Pfad des Valerie-Ordners woanders hin gelegt hat.
Dann die Box neugestartet hat. Am neuen Speicherort wurden dann die ganzen 
Dateien
(sync.xml, pre.conf usw.) inkl. der paths.xml angelegt.
Wieder neu gestartet, dann den Pfad zum Valerie-Ordner wieder zum 
unsprünglichen Ort
zurückgestezt (da liegt ja die Datenbank) und die paths.xml dorthin verschoben 
(die "alte" mit der neuen überschreiben). Anschliessen wieder die Box neu 
gestartet.

Jetzt konnte man bis zum nächsten Neustart der Box im WebIF und in der GUI 
wieder auf die Sync-Settings. Aber wie geschrieben, nach einem Neustart der Box 
war der Zugriff wieder "Essig" und die Fehlermeldung kam wieder.

Jens

Original comment by jedis...@googlemail.com on 15 Sep 2012 at 7:20

GoogleCodeExporter commented 8 years ago
Mal eine andere Frage zwischendurch... Kann man Filme und Serien manuell - per 
Tastendruck o.ä. - als "gesehen" markieren?

Gruss,

Jens

Original comment by jedis...@googlemail.com on 15 Sep 2012 at 7:39

GoogleCodeExporter commented 8 years ago
Hi nochmal,

Danke erstmal für die Steps - ich werde das bei Gelegenheit mal versuchen 
nachzustellen...

Zu Deiner Frage:
wenn Du einen Film in der Movieliste markiert hast, kannst Du die "Menu"-Taste 
auf Deiner FB drücken und dort dann "Als gesehen markieren" drücken. Dort 
gibt es dann z.B. auch das schöne Youtube-Trailer Plugin als Auswahl, um Dir 
eine Vorschau angucken zu können... :-)

Das gleiche müsste dann auch für Serien funktionieren, wobei ich so aus dem 
Stegreif leider nicht weiß, ob man damit auch komplette Staffeln als gesehen 
markieren kann => einfach mal ausprobieren :-)

Gruß, Erik

Original comment by erik.for...@gmail.com on 15 Sep 2012 at 7:49

GoogleCodeExporter commented 8 years ago
Hallo Erik,

danke, wer ich gleich ausprobieren.

Gruss,

Jens

Original comment by jedis...@googlemail.com on 15 Sep 2012 at 8:50