[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32955] trunk/blender/release/scripts: [ #24602] Netrender master node IP information is reset to [Default] no matter what

Martin Poirier theeth at yahoo.com
Tue Nov 9 04:37:52 CET 2010


Revision: 32955
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32955
Author:   theeth
Date:     2010-11-09 04:37:51 +0100 (Tue, 09 Nov 2010)

Log Message:
-----------
[#24602] Netrender master node IP information is reset to [Default] no matter what

[#24601] Net rendering master node fails to send/retrieve files to/from slaves

Both Reported by Dan McGrath

The second might not actually be fixed with this, but now there is better error checking and reporting.

Misc: add poll method in Panel base class, to better support mixins with different inheritance order.

Modified Paths:
--------------
    trunk/blender/release/scripts/io/netrender/__init__.py
    trunk/blender/release/scripts/io/netrender/slave.py
    trunk/blender/release/scripts/io/netrender/ui.py
    trunk/blender/release/scripts/io/netrender/utils.py
    trunk/blender/release/scripts/modules/bpy_types.py

Modified: trunk/blender/release/scripts/io/netrender/__init__.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/__init__.py	2010-11-09 01:37:58 UTC (rev 32954)
+++ trunk/blender/release/scripts/io/netrender/__init__.py	2010-11-09 03:37:51 UTC (rev 32955)
@@ -49,7 +49,7 @@
 blacklist = []
 
 init_file = ""
-init_address = True
+valid_address = False
 init_data = True
 
 

Modified: trunk/blender/release/scripts/io/netrender/slave.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/slave.py	2010-11-09 01:37:58 UTC (rev 32954)
+++ trunk/blender/release/scripts/io/netrender/slave.py	2010-11-09 03:37:51 UTC (rev 32955)
@@ -281,12 +281,12 @@
                             # thumbnail first
                             if netsettings.use_slave_thumb:
                                 thumbname = thumbnail(filename)
-
-                                f = open(thumbname, 'rb')
-                                conn.request("PUT", "/thumb", f, headers=headers)
-                                f.close()
-                                responseStatus(conn)
                                 
+                                if thumbname:
+                                    f = open(thumbname, 'rb')
+                                    conn.request("PUT", "/thumb", f, headers=headers)
+                                    f.close()
+                                    responseStatus(conn)
 
                             f = open(filename, 'rb')
                             conn.request("PUT", "/render", f, headers=headers)

Modified: trunk/blender/release/scripts/io/netrender/ui.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/ui.py	2010-11-09 01:37:58 UTC (rev 32954)
+++ trunk/blender/release/scripts/io/netrender/ui.py	2010-11-09 03:37:51 UTC (rev 32955)
@@ -36,6 +36,8 @@
 DONE = 2
 ERROR = 3
 
+LAST_ADDRESS_TEST = 0
+
 def base_poll(cls, context):
     rd = context.scene.render
     return (rd.use_game_engine==False) and (rd.engine in cls.COMPAT_ENGINES)
@@ -45,7 +47,7 @@
     if netrender.init_file != bpy.data.filepath:
         netrender.init_file = bpy.data.filepath
         netrender.init_data = True
-        netrender.init_address = True
+        netrender.valid_address = False
 
 def init_data(netsettings):
     init_file()
@@ -66,10 +68,11 @@
             netsettings.jobs.remove(0)
 
 def verify_address(netsettings):
+    global LAST_ADDRESS_TEST
     init_file()
 
-    if netrender.init_address:
-        netrender.init_address = False
+    if LAST_ADDRESS_TEST + 5 < time.time():
+        LAST_ADDRESS_TEST = time.time()
 
         try:
             conn = clientConnection(netsettings.server_address, netsettings.server_port, scan = False)
@@ -77,10 +80,16 @@
             conn = None
 
         if conn:
+            netrender.valid_address = True
             conn.close()
         else:
-            netsettings.server_address = "[default]"
+            netrender.valid_address = False
 
+class NeedValidAddress():
+    @classmethod
+    def poll(cls, context):
+        return netrender.valid_address and super(NeedValidAddress, cls).poll(context)
+
 class RenderButtonsPanel():
     bl_space_type = "PROPERTIES"
     bl_region_type = "WINDOW"
@@ -90,16 +99,16 @@
     @classmethod
     def poll(cls, context):
         rd = context.scene.render
-        return (rd.use_game_engine==False) and (rd.engine in cls.COMPAT_ENGINES)
+        return rd.use_game_engine == False and rd.engine in cls.COMPAT_ENGINES and super().poll(context)
 
 # Setting panel, use in the scene for now.
-class RENDER_PT_network_settings(bpy.types.Panel, RenderButtonsPanel):
+class RENDER_PT_network_settings(RenderButtonsPanel, bpy.types.Panel):
     bl_label = "Network Settings"
     COMPAT_ENGINES = {'NET_RENDER'}
 
     @classmethod
     def poll(cls, context):
-        return super(RENDER_PT_network_settings, cls).poll(context)
+        return super().poll(context)
 
     def draw(self, context):
         layout = self.layout
@@ -128,17 +137,20 @@
 
         if netsettings.mode != "RENDER_MASTER":
             layout.operator("render.netclientscan", icon='FILE_REFRESH', text="")
+            
+        if not netrender.valid_address:
+            layout.label(text="No master at specified address")
 
         layout.operator("render.netclientweb", icon='QUESTION')
 
-class RENDER_PT_network_slave_settings(bpy.types.Panel, RenderButtonsPanel):
+class RENDER_PT_network_slave_settings(RenderButtonsPanel, bpy.types.Panel):
     bl_label = "Slave Settings"
     COMPAT_ENGINES = {'NET_RENDER'}
 
     @classmethod
     def poll(cls, context):
         scene = context.scene
-        return super(RENDER_PT_network_slave_settings, cls).poll(context) and scene.network_render.mode == "RENDER_SLAVE"
+        return super().poll(context) and scene.network_render.mode == "RENDER_SLAVE"
 
     def draw(self, context):
         layout = self.layout
@@ -156,14 +168,14 @@
         sub.enabled = rd.threads_mode == 'FIXED'
         sub.prop(rd, "threads")
 
-class RENDER_PT_network_master_settings(bpy.types.Panel, RenderButtonsPanel):
+class RENDER_PT_network_master_settings(RenderButtonsPanel, bpy.types.Panel):
     bl_label = "Master Settings"
     COMPAT_ENGINES = {'NET_RENDER'}
 
     @classmethod
     def poll(cls, context):
         scene = context.scene
-        return super(RENDER_PT_network_master_settings, cls).poll(context) and scene.network_render.mode == "RENDER_MASTER"
+        return super().poll(context) and scene.network_render.mode == "RENDER_MASTER"
 
     def draw(self, context):
         layout = self.layout
@@ -174,14 +186,14 @@
         layout.prop(netsettings, "use_master_broadcast")
         layout.prop(netsettings, "use_master_clear")
 
-class RENDER_PT_network_job(bpy.types.Panel, RenderButtonsPanel):
+class RENDER_PT_network_job(RenderButtonsPanel, bpy.types.Panel):
     bl_label = "Job Settings"
     COMPAT_ENGINES = {'NET_RENDER'}
 
     @classmethod
     def poll(cls, context):
         scene = context.scene
-        return super(RENDER_PT_network_job, cls).poll(context) and scene.network_render.mode == "RENDER_CLIENT"
+        return super().poll(context) and scene.network_render.mode == "RENDER_CLIENT"
 
     def draw(self, context):
         layout = self.layout
@@ -216,14 +228,14 @@
         row.prop(netsettings, "priority")
         row.prop(netsettings, "chunks")
 
-class RENDER_PT_network_job_vcs(bpy.types.Panel, RenderButtonsPanel):
+class RENDER_PT_network_job_vcs(RenderButtonsPanel, bpy.types.Panel):
     bl_label = "VCS Job Settings"
     COMPAT_ENGINES = {'NET_RENDER'}
 
     @classmethod
     def poll(cls, context):
         scene = context.scene
-        return (super(RENDER_PT_network_job_vcs, cls).poll(context)
+        return (super().poll(context)
             and scene.network_render.mode == "RENDER_CLIENT"
             and scene.network_render.job_type == "JOB_VCS")
 
@@ -240,7 +252,7 @@
         layout.prop(netsettings, "vcs_rpath")
         layout.prop(netsettings, "vcs_wpath")
 
-class RENDER_PT_network_slaves(bpy.types.Panel, RenderButtonsPanel):
+class RENDER_PT_network_slaves(RenderButtonsPanel, NeedValidAddress, bpy.types.Panel):
     bl_label = "Slaves Status"
     COMPAT_ENGINES = {'NET_RENDER'}
 
@@ -251,7 +263,7 @@
         if netsettings.mode != "RENDER_CLIENT":
             return False
         verify_address(netsettings)
-        return super(RENDER_PT_network_slaves, cls).poll(context) and netsettings.server_address != "[default]"
+        return super().poll(context)
 
     def draw(self, context):
         layout = self.layout
@@ -278,7 +290,7 @@
             layout.label(text="Seen: " + time.ctime(slave.last_seen))
             layout.label(text="Stats: " + slave.stats)
 
-class RENDER_PT_network_slaves_blacklist(bpy.types.Panel, RenderButtonsPanel):
+class RENDER_PT_network_slaves_blacklist(RenderButtonsPanel, NeedValidAddress, bpy.types.Panel):
     bl_label = "Slaves Blacklist"
     COMPAT_ENGINES = {'NET_RENDER'}
 
@@ -289,7 +301,7 @@
         if netsettings.mode != "RENDER_CLIENT":
             return False
         verify_address(netsettings)
-        return super(RENDER_PT_network_slaves_blacklist, cls).poll(context) and netsettings.server_address != "[default]"
+        return super().poll(context)
 
     def draw(self, context):
         layout = self.layout
@@ -315,7 +327,7 @@
             layout.label(text="Seen: " + time.ctime(slave.last_seen))
             layout.label(text="Stats: " + slave.stats)
 
-class RENDER_PT_network_jobs(bpy.types.Panel, RenderButtonsPanel):
+class RENDER_PT_network_jobs(RenderButtonsPanel, NeedValidAddress, bpy.types.Panel):
     bl_label = "Jobs"
     COMPAT_ENGINES = {'NET_RENDER'}
 
@@ -326,7 +338,7 @@
         if netsettings.mode != "RENDER_CLIENT":
             return False
         verify_address(netsettings)
-        return super(RENDER_PT_network_jobs, cls).poll(context) and netsettings.server_address != "[default]"
+        return super().poll(context)
 
     def draw(self, context):
         layout = self.layout

Modified: trunk/blender/release/scripts/io/netrender/utils.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/utils.py	2010-11-09 01:37:58 UTC (rev 32954)
+++ trunk/blender/release/scripts/io/netrender/utils.py	2010-11-09 03:37:51 UTC (rev 32955)
@@ -245,8 +245,9 @@
             process = subprocess.Popen(["convert", thumbname, "-resize", "300x300", thumbname])
             process.wait()
             return thumbname
-        except:
-            pass
+        except Exception as exp:
+            print("Error while generating thumbnail")
+            print(exp)
 
     return None
 

Modified: trunk/blender/release/scripts/modules/bpy_types.py
===================================================================
--- trunk/blender/release/scripts/modules/bpy_types.py	2010-11-09 01:37:58 UTC (rev 32954)
+++ trunk/blender/release/scripts/modules/bpy_types.py	2010-11-09 03:37:51 UTC (rev 32955)
@@ -723,7 +723,13 @@
 class Panel(StructRNA, _GenericUI, metaclass=RNAMeta):
     __slots__ = ()
 
+    @classmethod
+    def poll(cls, context):
+        # super class might not have a poll function, better be careful
+        cls = super()

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list