Product: TIBCO Spotfire®
"Invalid port for node Node" exception is seen in TIBCO Spotfire server.log file due to inavlid port set for the nodes in Spotfire database.
You may notice following stack trace in server.log that occurs if (under some condition) the dbo.NODES table in Spotfire metadata database has a Spotfire server or Node Manager defined with port 0 instead of valid port.
DEBUG 2020-11-18T08:49:17,674-0500 [service-inspector-31856] common.domain.Node: Invalid port for node Node [serverId=7148ce4f-a249-41c6-8a1e-43ce8c9fb387, serverName=client.local, capabilities=[], platform=WINDOWS, port=0, primus=false, primusCapable=false, remote=true, online=false, siteID=5c2c7b84-e1f4-4187-9799-85a2a48f0ebc]
java.lang.Exception: Invalid port set
at com.spotfire.server.common.domain.Node.setPort(Node.java:191) ~[spotfire-service-framework.jar:?]
at jdk.internal.reflect.GeneratedMethodAccessor186.invoke(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
at org.apache.ibatis.reflection.invoker.MethodInvoker.invoke(MethodInvoker.java:44) ~[mybatis.jar:3.5.3]
at org.apache.ibatis.reflection.wrapper.BeanWrapper.setBeanProperty(BeanWrapper.java:180) ~[mybatis.jar:3.5.3]
at org.apache.ibatis.reflection.wrapper.BeanWrapper.set(BeanWrapper.java:59) ~[mybatis.jar:3.5.3]
at org.apache.ibatis.reflection.MetaObject.setValue(MetaObject.java:140) ~[mybatis.jar:3.5.3]
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.applyPropertyMappings(DefaultResultSetHandler.java:455) ~[mybatis.jar:3.5.3]
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:404) ~[mybatis.jar:3.5.3]
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForSimpleResultMap(DefaultResultSetHandler.java:354) ~[mybatis.jar:3.5.3]
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:328) ~[mybatis.jar:3.5.3]
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:301) ~[mybatis.jar:3.5.3]
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:194) ~[mybatis.jar:3.5.3]
at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:65) ~[mybatis.jar:3.5.3]
at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79) ~[mybatis.jar:3.5.3]
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63) ~[mybatis.jar:3.5.3]
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324) ~[mybatis.jar:3.5.3]
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) ~[mybatis.jar:3.5.3]
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) ~[mybatis.jar:3.5.3]
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83) ~[mybatis.jar:3.5.3]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) ~[mybatis.jar:3.5.3]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140) ~[mybatis.jar:3.5.3]
at jdk.internal.reflect.GeneratedMethodAccessor182.invoke(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:426) ~[mybatis-spring.jar:2.0.3]
at com.sun.proxy.$Proxy104.selectList(Unknown Source) ~[?:?]
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:223) ~[mybatis-spring.jar:2.0.3]
at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:147) ~[mybatis.jar:3.5.3]
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:80) ~[mybatis.jar:3.5.3]
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:93) ~[mybatis.jar:3.5.3]
at com.sun.proxy.$Proxy107.listNodes(Unknown Source) ~[?:?]
at jdk.internal.reflect.GeneratedMethodAccessor312.invoke(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344) ~[spring-aop.jar:5.2.7.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198) ~[spring-aop.jar:5.2.7.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop.jar:5.2.7.RELEASE]
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95) ~[spring-aop.jar:5.2.7.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop.jar:5.2.7.RELEASE]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) ~[spring-aop.jar:5.2.7.RELEASE]
at com.sun.proxy.$Proxy108.listNodes(Unknown Source) ~[?:?]
at jdk.internal.reflect.GeneratedMethodAccessor312.invoke(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344) ~[spring-aop.jar:5.2.7.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198) ~[spring-aop.jar:5.2.7.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop.jar:5.2.7.RELEASE]
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95) ~[spring-aop.jar:5.2.7.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop.jar:5.2.7.RELEASE]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) ~[spring-aop.jar:5.2.7.RELEASE]
at com.sun.proxy.$Proxy108.listNodes(Unknown Source) ~[?:?]
at com.spotfire.server.nodemanager.data.service.PersistenceService.listNodes(PersistenceService.java:909) ~[spotfire-node-manager.jar:?]
at com.spotfire.server.nodemanager.data.service.PersistenceService.getNodesFromCache(PersistenceService.java:929) ~[spotfire-node-manager.jar:?]
at com.spotfire.server.nodemanager.control.ServiceInspector.getNodesFromCache(ServiceInspector.java:187) ~[spotfire-node-manager.jar:?]
at com.spotfire.server.nodemanager.control.ServiceInspector.run(ServiceInspector.java:90) ~[spotfire-node-manager.jar:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) ~[?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
This only occurs when there are server nodes found in the environment that have not been started (bootstrap created, which register a server node with id in the Spotfire database and the port=0, which then is set when the server starts).To resolve, you can do one of the following,
1. From the Administration console
- Login to the Administration Console in the browser
- Goto Node & Services
- In the select a view drop down choose Spotfire Server
- Select an offline Server and delete it
- If the offline server nodes are not listed in the UI then you can manually delete the entries with port "0" under "dbo.nodes" table in Spotfire database as they are marked as offline.
NOTE: Please take back up of the Spotfire Database before making any changes to it manually.
Comments
0 comments
Article is closed for comments.