• FEATURES
  • PRICING
  • MARKETPLACE
  • CASE STUDIES
  • BLOG
  • Blank pages after build

    Hi, I’m having trouble getting the application to build for the first time. The application is built and deployed successfully, but there are problems after logging into OpenSpecimen.
    The issue is that many pages are blank, namely the System Administrator page, and I can’t find any useful logs. Please advise on where I can look to troubleshoot.

    Attached are screenshots, build logs, and config files

    Home

    System Administrator

    npm.txt (2.4 KB)
    bower.txt (16.7 KB)
    gradle.txt (31 KB)
    catalina.2022-06-22.log (12.9 KB)
    localhost.2022-06-22.log (769 Bytes)

    context.xml (2.1 KB)
    openspecimen.properties (219 Bytes)

    Clicking on User leaves you with nothing ? You need to modify the Vue main.js. The problem is the main.js has a loop at the bottom that is not entered and responsible for rendering the vue parts of the UI:

    https://github.com/krishagni/openspecimen/blob/master/ui/src/main.js

    Specifically:

    let count = appProps.plugins.length;
        appProps.plugins.forEach(
          (pluginName) => {
            pluginLoader.load(pluginName).then(
              function(pluginModule) {
                app.use(pluginModule.default, { router, osSvc });
                --count;
                if (count <= 0) {
                  app.use(router).use(PrimeVue)
                    .mount('#app');
                }
              },
    
              function(error) {
                console.log('Error loading the plugin: ' + pluginName);
                console.log(error);
                --count;
                if (count <= 0) {
                  app.use(router).use(PrimeVue)
                    .mount('#app');
                }
              }
            )
          }
        );
      }
    );
    

    Does not execute
    app.use(router).use(PrimeVue)
    since .forEach() wont even enter the loop if count = 0 or None

    So for testing i fix this like this:

    let count = appProps.plugins.length;
        appProps.plugins.forEach(
          (pluginName) => {
            pluginLoader.load(pluginName).then(
              function(pluginModule) {
                app.use(pluginModule.default, { router, osSvc });
                --count;
                if (count <= 0) {
                  app.use(router).use(PrimeVue)
                    .mount('#app');
                }
              },
    
              function(error) {
                console.log('Error loading the plugin: ' + pluginName);
                console.log(error);
                --count;
                if (count <= 0) {
                  app.use(router).use(PrimeVue)
                    .mount('#app');
                }
              }
            )
          }
        );
        app.use(router).use(PrimeVue)
                    .mount('#app');
      }
    );
    

    Such that vue renders anything. Otherwise you can create the directory structure such that count is not None or 0, which i recommend for anything more than toying arround

    Ok, so that worked. Everything appears to be working after bypassing that counter.
    Why doesn’t it work normally? Do I have missing plugins, or what is a more permanent fix?

    Everything is working normal at least as long as you do not have any plugins :slight_smile:

    Hmm it counts the number of plugins that are registered into OpenSpecimen. As soon as there are Plugins it should be workin. Just remember Krishagni sells an ENTERPRISE version, which per defnition has some plugins. Actually I employ a plugin which makes counter work as intended( like the ones you can find here
    https://github.com/krishagni/os-extensions). I try to stick as close to source as possible.

    So the stuff you find in the extensions dir gives you basic directions but is not working out of the box. Further tbh a lot is going to change in the upcoming months and would not bet on this repo being viable at all in 2 months since the OpenSpecimen UI is goign through major changes.
    As soon as those are done Krishagni is most likely going to start porting the API from spring to spring boot.

    Long story short make your demo case and either:

    Buy the product or gather a team of developers

    Hi @Simon_Streit

    Thanks for identifying the issue with the UI loading. We’ll fix this issue on the master branch. The fix will be available in v9.1

    Thanks,
    Vinayak

    Why wouldn’t this repo be viable? It looks like Krishagni is actively maintaining it, is there a chance they drop support for the open source version? What is your plan going forward?

    Seems to be fixed in 9.1 as Vinayak stated above

    Hi - built openSpecimen from source code v9.1.RC4 and have made it run partially, but I get blank pages when I select several menu options like “Users”, “Distribution Protocol”, “Institutes” or “Jobs”.

    Catalina Log:

    26-Dec-2022 17:39:22.906 INFO [pool-6-thread-1] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Illegal access: this web application instance has been stopped already. Could not load [com.krishagni.catissueplus.core.common.TransactionalInterceptor]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
    java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [com.krishagni.catissueplus.core.common.TransactionalInterceptor]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
    at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1432)
    at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1420)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1259)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1220)
    at org.apache.logging.log4j.util.LoaderUtil.loadClass(LoaderUtil.java:167)
    at org.apache.logging.log4j.core.impl.ThrowableProxyHelper.loadClass(ThrowableProxyHelper.java:214)
    at org.apache.logging.log4j.core.impl.ThrowableProxyHelper.toExtendedStackTrace(ThrowableProxyHelper.java:112)
    at org.apache.logging.log4j.core.impl.ThrowableProxy.(ThrowableProxy.java:112)
    at org.apache.logging.log4j.core.impl.ThrowableProxy.(ThrowableProxy.java:96)
    at org.apache.logging.log4j.core.impl.Log4jLogEvent.getThrownProxy(Log4jLogEvent.java:629)
    at org.apache.logging.log4j.core.pattern.ExtendedThrowablePatternConverter.format(ExtendedThrowablePatternConverter.java:63)
    at org.apache.logging.log4j.core.pattern.PatternFormatter.format(PatternFormatter.java:44)
    at org.apache.logging.log4j.core.layout.PatternLayout$PatternFormatterPatternSerializer.toSerializable(PatternLayout.java:385)
    at org.apache.logging.log4j.core.layout.PatternLayout.toText(PatternLayout.java:241)
    at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:226)
    at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:60)
    at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:197)
    at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:190)
    at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:181)
    at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:161)
    at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:134)
    at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:125)
    at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:89)
    at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:542)
    at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:500)
    at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:483)
    at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:417)
    at org.apache.logging.log4j.core.config.DefaultReliabilityStrategy.log(DefaultReliabilityStrategy.java:63)
    at org.apache.logging.log4j.core.Logger.log(Logger.java:161)
    at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2205)
    at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2159)
    at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2142)
    at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2017)
    at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1983)
    at org.apache.logging.log4j.spi.AbstractLogger.error(AbstractLogger.java:750)
    at com.krishagni.catissueplus.core.common.util.LogUtil.error(LogUtil.java:81)
    at com.krishagni.catissueplus.core.importer.services.impl.ImportServiceImpl.runImportJobScheduler(ImportServiceImpl.java:711)
    at com.krishagni.catissueplus.core.importer.services.impl.ImportServiceImpl.lambda$1(ImportServiceImpl.java:467)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:750)
    17:39:22.905 [pool-6-thread-1] ERROR com.krishagni.catissueplus.core.importer.services.impl.ImportServiceImpl - Import jobs scheduler encountered a fatal exception. Stopping to run import jobs.
    java.lang.NoClassDefFoundError: com/krishagni/catissueplus/core/common/errors/CommonErrorCode
    at com.krishagni.catissueplus.core.common.TransactionalInterceptor.doWork(TransactionalInterceptor.java:88) ~[classes/:]
    at com.krishagni.catissueplus.core.common.TransactionalInterceptor.ajc$inlineAccessMethod$com_krishagni_catissueplus_core_common_TransactionalInterceptor$com_krishagni_catissueplus_core_common_TransactionalInterceptor$doWork(TransactionalInterceptor.java:1) ~[classes/:]
    at com.krishagni.catissueplus.core.common.TransactionalInterceptor.startTransaction(TransactionalInterceptor.java:69) ~[classes/:]
    at com.krishagni.catissueplus.core.importer.services.impl.ImportServiceImpl.markInProgressJobsAsFailed(ImportServiceImpl.java:716) ~[classes/:]
    at com.krishagni.catissueplus.core.importer.services.impl.ImportServiceImpl.runImportJobScheduler(ImportServiceImpl.java:679) ~[classes/:]
    at com.krishagni.catissueplus.core.importer.services.impl.ImportServiceImpl.lambda$1(ImportServiceImpl.java:467) ~[classes/:]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_352]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_352]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_352]
    at java.lang.Thread.run(Thread.java:750) [?:1.8.0_352]

    Hello Brenden,

    Please share the openspecimen.war file with us and send the output of the below command:

    jar -tvf openspecimen.war

    Regards,
    Kaustubh

    Here you go
    war.txt (438.1 KB)

    Proably still the same error see my solution above