Some error handling to avoid errors in SEC

0.6.0-stable
Tedd Hansen 2008-09-21 00:42:27 +00:00
parent 2dbb32ff15
commit 9c8aeff27c
2 changed files with 40 additions and 18 deletions

View File

@ -72,21 +72,25 @@ namespace OpenSim.ApplicationPlugins.ScriptEngine
foreach (string c in ComponentList) foreach (string c in ComponentList)
{ {
m_log.Info("[" + Name + "]: Loading: " + c); m_log.Info("[" + Name + "]: Loading: " + c);
try lock (Components)
{ {
if (ComponentRegistry.providers.ContainsKey(c)) try
Components.Add(Activator.CreateInstance(ComponentRegistry.providers[c]) as ComponentBase); {
else if (ComponentRegistry.providers.ContainsKey(c))
m_log.Error("[" + Name + "]: Component \"" + c + "\" not found, can not load"); Components.Add(Activator.CreateInstance(ComponentRegistry.providers[c]) as ComponentBase);
} catch (Exception ex) else
{ m_log.Error("[" + Name + "]: Component \"" + c + "\" not found, can not load");
m_log.Error("[" + Name + "]: Exception loading \"" + c + "\": " + ex.ToString()); }
catch (Exception ex)
{
m_log.Error("[" + Name + "]: Exception loading \"" + c + "\": " + ex.ToString());
}
} }
} }
// Run Initialize on all our providers, hand over a reference of ourself. // Run Initialize on all our providers, hand over a reference of ourself.
foreach (ComponentBase p in Components) foreach (ComponentBase p in Components.ToArray())
{ {
try try
{ {
@ -94,12 +98,17 @@ namespace OpenSim.ApplicationPlugins.ScriptEngine
} }
catch (Exception ex) catch (Exception ex)
{ {
m_log.Error("[" + Name + "]: Error initializing \"" + p.GetType().FullName + "\": " + ex.ToString()); lock (Components)
Components.Remove(p); {
m_log.Error("[" + Name + "]: Error initializing \"" + p.GetType().FullName + "\": " +
ex.ToString());
if (Components.Contains(p))
Components.Remove(p);
}
} }
} }
// All modules has been initialized, call Start() on them. // All modules has been initialized, call Start() on them.
foreach (ComponentBase p in Components) foreach (ComponentBase p in Components.ToArray())
{ {
try try
{ {
@ -107,8 +116,12 @@ namespace OpenSim.ApplicationPlugins.ScriptEngine
} }
catch (Exception ex) catch (Exception ex)
{ {
m_log.Error("[" + Name + "]: Error starting \"" + p.GetType().FullName + "\": " + ex.ToString()); lock (Components)
Components.Remove(p); {
m_log.Error("[" + Name + "]: Error starting \"" + p.GetType().FullName + "\": " + ex.ToString());
if (Components.Contains(p))
Components.Remove(p);
}
} }
} }
@ -149,7 +162,7 @@ namespace OpenSim.ApplicationPlugins.ScriptEngine
PreClose(); PreClose();
// Then Call Close() on all components // Then Call Close() on all components
foreach (ComponentBase p in Components) foreach (ComponentBase p in Components.ToArray())
{ {
try try
{ {

View File

@ -45,8 +45,17 @@ namespace OpenSim.ApplicationPlugins.ScriptEngine
{ {
// New region is being created // New region is being created
// Create a new script engine // Create a new script engine
scriptEngine = Activator.CreateInstance(ComponentRegistry.scriptEngines[tempScriptEngineName]) as RegionScriptEngineBase; try
scriptEngine.Initialize(scene, source); {
scriptEngine =
Activator.CreateInstance(ComponentRegistry.scriptEngines[tempScriptEngineName]) as
RegionScriptEngineBase;
scriptEngine.Initialize(scene, source);
}
catch (Exception ex)
{
scriptEngine.m_log.Error("[ScriptEngine]: Unable to load engine \"" + tempScriptEngineName + "\": " + ex.ToString());
}
} }
public void PostInitialise() public void PostInitialise()