Explorar o código

Merge pull request #3700 from ghalliday/issue8292

HPCC-8292 Recover from errors starting esp when reading plugin symbols

Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman %!s(int64=12) %!d(string=hai) anos
pai
achega
4a3159399a
Modificáronse 1 ficheiros con 16 adicións e 6 borrados
  1. 16 6
      common/fileview2/fvtransform.cpp

+ 16 - 6
common/fileview2/fvtransform.cpp

@@ -293,18 +293,28 @@ void ViewTransformerRegistry::addPlugins(const char * name)
     HqlParseContext parseCtx(dataServer, NULL);
     HqlLookupContext ctx(parseCtx, &errors);
     getRootScopes(scopes, dataServer, ctx);
+
     ForEachItemIn(i, scopes)
     {
         IHqlScope * scope = &scopes.item(i);
         HqlExprArray symbols;
-        scope->ensureSymbolsDefined(ctx);
-        scope->getSymbols(symbols);
+        try
+        {
+            scope->ensureSymbolsDefined(ctx);
+            scope->getSymbols(symbols);
 
-        ForEachItemIn(j, symbols)
+            ForEachItemIn(j, symbols)
+            {
+                IHqlExpression & cur = symbols.item(j);
+                if (cur.getOperator() == no_service)
+                    addServiceDefinition(&cur);
+            }
+        }
+        catch (IException * e)
         {
-            IHqlExpression & cur = symbols.item(j);
-            if (cur.getOperator() == no_service)
-                addServiceDefinition(&cur);
+            const char * name = scope->queryName()->str();
+            VStringBuffer msg("Error loading plugin %s", name);
+            EXCLOG(e, msg.str());
         }
     }
 }