"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.
book
Article ID: KB0074506
calendar_today
Updated On:
Products
Versions
Spotfire Server
All Versions
Description
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) [?:?]
Resolution
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
2. Delete from Spotfire Database
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.
Issue/Introduction
This article illustrates why "common.domain.Node: Invalid port for node Node " exception is seen in server.log and steps to follow to solve the problem.