"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.

"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) [?:?]

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.

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.

User-added image
NOTE: Please take back up of the Spotfire Database before making any changes to it manually.