Arafat Khan created HDDS-14046:
----------------------------------

             Summary: ReconStorageContainerManagerFacade is not getting 
initialized properly after upgrade
                 Key: HDDS-14046
                 URL: https://issues.apache.org/jira/browse/HDDS-14046
             Project: Apache Ozone
          Issue Type: Improvement
          Components: Ozone Recon
            Reporter: Arafat Khan
            Assignee: Arafat Khan
             Fix For: 2.2.0


The issue is a race condition during the Recon startup sequence. The 
*{{ReconTaskStatusTableUpgradeAction}}* (which adds the 
*{{last_task_run_status}}* column) was being executed _after_ the Recon 
services were started.

Specifically, *{{ReconServer.start()}}* initializes and registers 
{*}{{ReconTaskStatusMetrics}}{*}. The metrics system (or other background tasks 
started by {*}{{start()}}{*}) immediately attempts to query the 
*{{RECON_TASK_STATUS}}* table. Since the upgrade logic 
({*}{{finalizeLayoutFeatures}}{*}) was scheduled to run _after_ 
{*}{{start()}}{*}, the query failed with *{{SQLSyntaxErrorException}}* because 
the new column did not exist yet.

*The Error we are getting now -* 
{code:java}
Caused by: java.sql.SQLSyntaxErrorException: Column 
'RECON_TASK_STATUS.last_task_run_status' is either not in any table in the FROM 
list or appears within a join specification and is outside the scope of the 
join specification or appears in a HAVING clause and is not in the GROUP BY 
list. If this is a CREATE or ALTER TABLE  statement then 
'RECON_TASK_STATUS.last_task_run_status' is not a column in the target table.   
   at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown 
Source)       at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown 
Source)       at 
org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown 
Source)        at 
org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown 
Source)   at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown 
Source)   at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown 
Source)   at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(Unknown 
Source)     at 
org.apache.derby.impl.jdbc.EmbedPreparedStatement42.<init>(Unknown Source)   at 
org.apache.derby.jdbc.Driver42.newEmbedPreparedStatement(Unknown Source)     at 
org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)  at 
org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)  at 
org.jooq.impl.ProviderEnabledConnection.prepareStatement(ProviderEnabledConnection.java:109)
 at 
org.jooq.impl.SettingsEnabledConnection.prepareStatement(SettingsEnabledConnection.java:73)
  at org.jooq.impl.AbstractResultQuery.prepare(AbstractResultQuery.java:239)    
  at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:322)  ... 49 
moreCaused by: ERROR 42X04: Column 'RECON_TASK_STATUS.last_task_run_status' is 
either not in any table in the FROM list or appears within a join specification 
and is outside the scope of the join specification or appears in a HAVING 
clause and is not in the GROUP BY list. If this is a CREATE or ALTER TABLE  
statement then 'RECON_TASK_STATUS.last_task_run_status' is not a column in the 
target table.        at 
org.apache.derby.iapi.error.StandardException.newException(Unknown Source)   at 
org.apache.derby.iapi.error.StandardException.newException(Unknown Source)   at 
org.apache.derby.impl.sql.compile.ColumnReference.bindExpression(Unknown 
Source)     at 
org.apache.derby.impl.sql.compile.ColumnReference.bindExpression(Unknown 
Source)     at 
org.apache.derby.impl.sql.compile.ResultColumn.bindExpression(Unknown Source)   
     at 
org.apache.derby.impl.sql.compile.ResultColumnList.bindExpressions(Unknown 
Source)   at 
org.apache.derby.impl.sql.compile.SelectNode.bindExpressions(Unknown Source) at 
org.apache.derby.impl.sql.compile.DMLStatementNode.bindExpressions(Unknown 
Source)   at org.apache.derby.impl.sql.compile.DMLStatementNode.bind(Unknown 
Source)      at 
org.apache.derby.impl.sql.compile.CursorNode.bindStatement(Unknown Source)   at 
org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)        at 
org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)   at 
org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown
 Source)     ... 58 more2025-11-24 06:52:10,562 ERROR 
[main]-org.apache.hadoop.ozone.recon.ReconServer: 
ReconStorageContainerManagerFacade is not initialized properly. Setting health 
status to false and adding error code.2025-11-24 06:52:10,563 INFO 
[main]-org.apache.hadoop.ozone.recon.ReconContext: Update healthStatus of Recon 
from true to false.2025-11-24 06:52:10,563 ERROR 
[main]-org.apache.hadoop.ozone.recon.ReconServer: OzoneManagerServiceProvider 
is not initialized properly. Setting health status to false and adding error 
code.2025-11-24 06:52:10,563 INFO 
[main]-org.apache.hadoop.ozone.recon.ReconContext: Update healthStatus of Recon 
from false to false. {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to