RequestError: Unable to load /data_source_properties.shtm?typeId=MODBUS_IP status: 500
-
I am having an issue where the new/edit data source forms do not load and give the error in the title. I have done much testing already, but not all is pertinent. Let me know if you need more info.
What could cause this issue?
Issue Context
- New minimal Debian 9 install
- New install of Mango 3.5.6
- Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
- All processes run as root
- JAVA_HOME is set correctly
ma.log only WARN
WARN 2019-03-18T16:35:11,131 (org.springframework.web.servlet.handler.SimpleUrlHandlerMapping.registerHandlers:114) - Neither 'urlMap' nor 'mappings' set on SimpleUrlHandlerMapping
ma.log output for http request error
WARN 2019-03-18T16:39:22,218 (com.serotonin.m2m2.web.mvc.spring.exception.ExceptionUtils.logWebException:56) - REQUEST URL http://scada:8080/data_source_properties.shtm REQUEST PARAMETERS typeId=MODBUS_IP REQUEST HEADERS Cookie=COOKIE; XSRF-TOKEN=TOKEN X-Requested-With=XMLHttpRequest Accept=*/* Connection=keep-alive User-Agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36 Referer=http://scada:8080/data_sources.shtm Host=scada:8080 Accept-Encoding=gzip, deflate Accept-Language=en-US,en;q=0.9 Content-Type=application/x-www-form-urlencoded REQUEST ATTRIBUTES org.springframework.web.context.request.async.WebAsyncManager.WEB_ASYNC_MANAGER=org.springframework.web.context.request.async.WebAsyncManager@f34b62e javax.servlet.error.status_code=500 org.springframework.web.servlet.DispatcherServlet.CONTEXT=WebApplicationContext for namespace 'JSP_DISPATCHER-servlet': startup date [Mon Mar 18 16:35:06 EDT 2019]; parent: Root WebApplicationContext org.springframework.web.servlet.HandlerMapping.introspectTypeLevelMapping=false __spring_security_session_mgmt_filter_applied=true org.springframework.web.servlet.DispatcherServlet.LOCALE_RESOLVER=org.springframework.web.servlet.i18n.SessionLocaleResolver@d8b5202 org.springframework.web.servlet.HandlerMapping.bestMatchingPattern=/data_source_properties.shtm org.springframework.web.servlet.DispatcherServlet.OUTPUT_FLASH_MAP=FlashMap [attributes={}, targetRequestPath=null, targetRequestParams={}] javax.servlet.error.exception_type=class org.springframework.web.util.NestedServletException org.springframework.web.servlet.DispatcherServlet.FLASH_MAP_MANAGER=org.springframework.web.servlet.support.SessionFlashMapManager@64ce3bea lang=en lastUpgrade=1552941237 availableLanguages=[] javax.servlet.http.HttpServletResponse=org.springframework.security.web.header.HeaderWriterFilter$HeaderWriterResponse@6040c2ca sessionUser=User [id=1, username=admin, password=<redacted>, email=admin@yourMangoDomain.com, phone=, disabled=false, homeUrl=/ui/administration/home, lastLogin=1552941515009, receiveAlarmEmails=-3, receiveOwnAuditEvents=false, timezone=, name=Administrator, locale=, permissions=superadmin] _csrf=org.springframework.security.web.csrf.DefaultCsrfToken@7d93a416 __spring_security_filterSecurityInterceptor_filterApplied=true javax.servlet.error.message=org.springframework.web.util.NestedServletException: Request processing failed; nested exception is com.serotonin.util.LifecycleException: jssc.SerialNativeInterface.openPort(Ljava/lang/String;Z)J javax.servlet.error.servlet_name=JSP_DISPATCHER sessionAuthenticated=true org.springframework.web.servlet.DispatcherServlet.THEME_SOURCE=WebApplicationContext for namespace 'JSP_DISPATCHER-servlet': startup date [Mon Mar 18 16:35:06 EDT 2019]; parent: Root WebApplicationContext instanceDescription=My Mango Automation NEW_ID=-1 org.springframework.web.servlet.HandlerMapping.pathWithinHandlerMapping=/data_source_properties.shtm org.springframework.security.web.csrf.CsrfToken=org.springframework.security.web.csrf.DefaultCsrfToken@7d93a416 javax.servlet.error.request_uri=/data_source_properties.shtm org.springframework.web.servlet.DispatcherServlet.THEME_RESOLVER=org.springframework.web.servlet.theme.FixedThemeResolver@30eef6c4 javax.servlet.error.exception=org.springframework.web.util.NestedServletException: Request processing failed; nested exception is com.serotonin.util.LifecycleException: jssc.SerialNativeInterface.openPort(Ljava/lang/String;Z)J com.serotonin.util.LifecycleException: jssc.SerialNativeInterface.openPort(Ljava/lang/String;Z)J at com.infiniteautomation.mango.io.serial.SerialPortManagerImpl.initialize(SerialPortManagerImpl.java:164) ~[mango-3.5.6.jar:?] at com.infiniteautomation.mango.io.serial.SerialPortManagerImpl.getFreeCommPorts(SerialPortManagerImpl.java:61) ~[mango-3.5.6.jar:?] at com.serotonin.m2m2.web.mvc.controller.BaseDataSourceController.handleRequestInternal(BaseDataSourceController.java:184) ~[mango-3.5.6.jar:?] at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:177) ~[spring-webmvc-5.0.10.RELEASE.jar:5.0.10.RELEASE] at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:52) ~[spring-webmvc-5.0.10.RELEASE.jar:5.0.10.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991) ~[spring-webmvc-5.0.10.RELEASE.jar:5.0.10.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) ~[spring-webmvc-5.0.10.RELEASE.jar:5.0.10.RELEASE] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974) ~[spring-webmvc-5.0.10.RELEASE.jar:5.0.10.RELEASE] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:866) ~[spring-webmvc-5.0.10.RELEASE.jar:5.0.10.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:687) ~[javax.servlet-api-3.1.0.jar:3.1.0] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851) ~[spring-webmvc-5.0.10.RELEASE.jar:5.0.10.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0] at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865) ~[jetty-servlet-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1655) ~[jetty-servlet-9.4.12.v20180830.jar:9.4.12.v20180830] at com.serotonin.m2m2.web.filter.WebContextFilter.doFilter(WebContextFilter.java:43) ~[mango-3.5.6.jar:?] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) ~[jetty-servlet-9.4.12.v20180830.jar:9.4.12.v20180830] at com.serotonin.m2m2.web.filter.UrlSecurityFilter.doFilter(UrlSecurityFilter.java:191) ~[mango-3.5.6.jar:?] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) ~[jetty-servlet-9.4.12.v20180830.jar:9.4.12.v20180830] at com.serotonin.web.filter.CharacterSetFilter.doFilter(CharacterSetFilter.java:37) ~[mango-3.5.6.jar:?] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) ~[jetty-servlet-9.4.12.v20180830.jar:9.4.12.v20180830] at org.springframework.web.filter.ShallowEtagHeaderFilter.doFilterInternal(ShallowEtagHeaderFilter.java:108) ~[spring-web-5.0.10.RELEASE.jar:5.0.10.RELEASE] at com.serotonin.m2m2.web.filter.MangoShallowEtagHeaderFilter.doFilterInternal(MangoShallowEtagHeaderFilter.java:90) ~[mango-3.5.6.jar:?] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.10.RELEASE.jar:5.0.10.RELEASE] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1634) ~[jetty-servlet-9.4.12.v20180830.jar:9.4.12.v20180830] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.authentication.switchuser.SwitchUserFilter.doFilter(SwitchUserFilter.java:200) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at com.serotonin.m2m2.web.mvc.spring.security.RateLimitingFilter.doFilterInternal(RateLimitingFilter.java:56) ~[mango-3.5.6.jar:?] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.10.RELEASE.jar:5.0.10.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at com.serotonin.m2m2.web.mvc.spring.security.PermissionExceptionFilter.doFilter(PermissionExceptionFilter.java:34) ~[mango-3.5.6.jar:?] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:155) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:100) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.10.RELEASE.jar:5.0.10.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.10.RELEASE.jar:5.0.10.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.10.RELEASE.jar:5.0.10.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178) ~[spring-security-web-5.0.9.RELEASE.jar:5.0.9.RELEASE] at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357) ~[spring-web-5.0.10.RELEASE.jar:5.0.10.RELEASE] at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270) ~[spring-web-5.0.10.RELEASE.jar:5.0.10.RELEASE] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) ~[jetty-servlet-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533) ~[jetty-servlet-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146) ~[jetty-server-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) ~[jetty-security-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) ~[jetty-server-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257) ~[jetty-server-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595) ~[jetty-server-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) ~[jetty-server-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1340) ~[jetty-server-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) ~[jetty-server-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473) ~[jetty-servlet-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564) ~[jetty-server-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) ~[jetty-server-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1242) ~[jetty-server-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) ~[jetty-server-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220) ~[jetty-server-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:740) ~[jetty-server-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) ~[jetty-server-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.server.Server.handle(Server.java:503) ~[jetty-server-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364) ~[jetty-server-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260) ~[jetty-server-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830] at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_201]
-
@jvaughters said in RequestError: Unable to load /data_source_properties.shtm?typeId=MODBUS_IP status: 500:
ma.log only WARN
ma.log only WARN
Meant to be:
ma.log only WARN during startup
-
HI @jvaughters
Could you paste some screenshots of your issue? having a hard time replicating it. -
Thanks for looking at this issue. Here is what I get when I click on the green + to add/edit a data source. It happens to all data sources.
-
It's definitely strange. I have loaded Mango on many platforms before, but I am not sure I ever loaded it on a Debian 9 system. Maybe it was Debian 8. It really shouldn't matter as it is only using Java in any case. Mango is always easy to load and get working, so I am a bit stumped on this one. This is the first time I was not up and running within minutes.
-
oops don't want to muddy the water, I have loaded it on a Debian system before, which I am not sure if that was 8 or 9 and it worked perfectly and easily. This particular install is Debian 9 that I am having trouble with.
-
Hi jvaughters,
You may try deleting the Mango/work/jsp directory to force JSPs to recompile. The stack trace in the OP relates to serial ports, so perhaps the serial port regex in your Mango/overrides/properties/env.properties (or Mango/classes/env.properties if you've not copied it to overrides yet) describes a serial port that cannot be opened. Perhaps the Debian user launching Mango needs the
dialout
group, perhaps the regex needs to be revised to not describe files which are not serial ports.Unfortunately the stack trace is largely irrelevant because it's this exception being rewrapped and thrown: https://github.com/infiniteautomation/ma-core-public/blob/3.5.x/Core/src/com/infiniteautomation/mango/io/serial/SerialPortManagerImpl.java#L164
It being an unsatisfied link error would suggest the serial port library is having trouble accessing the appropriate resources (which are bundled with the JAR). I wonder if you've tried restarting Mango? Maybe reinstalling Mango or just the JSSC JAR file?
-
Hey Phil,
Great, thx for the suggestion. I will try that and report back. Just so you know, I have installed and reinstalled, even fresh installed a Mango 3.4.2 version that I had used prior. Both exhibited the same issue, so the Hardware link to the serial could be significant as this is a brand new hardware platform that I am using. I also have started it under a no console user for security, but wiped everything because of the issue and installed and ran software as root to remove the user factor from troubleshooting.
Specifically it is a Pine Rock64 with 4GB of Memory. It never occurred to me that the hardware could be an issue as I have loaded this on many different types of hardware and OS, all for testing or Demo purposes. For this specific load, I am planning to use it as an Energy Monitoring system for my house and I settled on this board.
-
Phil,
Thanks for pointing out the serial port issue. I tried deleting the dir you mentioned and reboot with no luck, but upon searching the error "jssc.SerialNativeInterface.openPort(Ljava/lang/String;Z)J" on the almighty infinitely wise web, I found a specific issue for ARM64 and jssc libraries. Mango does not seem to support the jssc libs that ARM64 uses. I have not worked out all the details yet, but here is the thread that describes a similar issue.
https://github.com/winder/Universal-G-Code-Sender/issues/524
Since the Pine Rock64 is ARM64 architecture, this seems to be the issue. The solution seems to be tracking down the proper libs and inserting them into the proper areas, which I have not done yet.
-
Good leg work! Here's the issue in the JSSC repo about it, https://github.com/scream3r/java-simple-serial-connector/issues/121
They seem to suggest compiling jssc.cpp and repacking the jar with the new .so file and an appropriate filename.
-
Right, so I have one better, there is already a compiled deb package "libjssc-java" that has all the files I believe I need. I have not done it yet, but I suspect I could repack the /opt/mango/lib/jssc-2.8.0.jar with the necessary compiled files. However, I have some questions.
- I have no plans on using any serial ports at all, can mango be configured to just ignore all serial ports and associated software?
- Do you think there will be any other hardware layer library issues with Mango?
Thanks as always for your help.
-
- I would suspect it'll never try to open any serial ports if it doesn't detect any. You could change the
serial.port.linux.regex
property to something that will not match any files in theserial.port.linux.path
which should avoid the issue. - I wouldn't think so. I think any other interacting with the system would be done through the JVM and not a 3rd party library.
- I would suspect it'll never try to open any serial ports if it doesn't detect any. You could change the
-
Ok, thx for the input. So last step that actually was quite easy and I did not have to do anything except install the "libjssc-java" deb package that was already in the repository and then copy /usr/share/java/jssc-2.8.0.jar to the /opt/mango/lib dir. Which will replace the default mango jar file and this solved the issue. I did not have to repack or anything else. The replacement jar references a library in the /usr/lib/jni directory that is compiled for the ARM64 architecture.
SOLVED
Thanks for the help as always, and now you also know how to fix this going forward.
-
Certainly, thanks for solving it here on the forum so people may search for it!