How to suppress PRISM module initialisation errors and continues execution

Introduction

While in the process of module initialization, if there is any error in a module, then PRISM will throw exception and will stop loading other modules until you fix the error in the module. But if your module is not really important in your application, you would like to suppress this module initialization error and continue loading other modules.

How did I do it:

In such situation you have to handle the ModuleInitializationError by your own. This is achieved by a Custom module initializer that silently logs module initialization errors but continues execution without throwing exceptions further up the call stack.

You will need to inherit ModuleInitializer and override HandleModuleInitializationError and then handle the exception by your own. ModuleInitializer is available in Microsoft.Practices.Prism.Modularity;

public class CustomModuleInitializer : ModuleInitializer  {
        public CustomModuleInitializer(IServiceLocator serviceLocator, ILoggerFacade loggerFacade)
            : base(serviceLocator, loggerFacade) {
        }

        public override void HandleModuleInitializationError(ModuleInfo moduleInfo, string assemblyName, Exception exception) {
            try {
                base.HandleModuleInitializationError(moduleInfo, assemblyName, exception);
            }
            catch (Exception ex) {
//log errors.
            }
        }
    }

And from your bootstrapper, override ConfigureContainer and register this module initializer like as shown below.

protected override void ConfigureContainer()        
{
// Register custom module initializer that does not stop initializing modules on first error.            
Container.RegisterType<IModuleInitializer, CustomModuleInitializer>();
}

Parquet file experiments, findings and recommendations

Parquet is a binary file format designed with big data in mind where we must access data frequently and efficiently. The way it stores file on the disk is also different from other file formats. It is a column-based data file. And in reality it uses both row based and column based approach to bring the best of both worlds. The data is encoded on disk which ensures that the size remains small compared to actual data and is then compressed where the file is scanned as whole and cut out redundant parts. The query/read speed is dramatically fast when compared to other file formats. Nested data is handled efficiently which is quite cumbersome in other file format to achieve. Doesn’t require to parse the entire file to find data due to its way of storing data. This makes it efficient in reading data. Works quite efficiently with data processing frameworks. Automatically stores schema information. SQL querying is possible with this file format using Continue reading

Libish Varghese Jacob

Libish Varghese JacobI am currently working as a lead engineer in one of the leading wind turbine manufacturing firm. I have wide range of interests and getting my hands dirty in technology is one among them. I use this platform primarily as my knowledge base. I also use this platform to share my experience and experiments so that it might help someone who is walking the way I already did. The suggestions expressed here are the best to my knowledge at the time of writing and this may not necessarily be the best possible solution. I would pretty much appreciate if you could comment on it to bring into my notice on what could have been done better.