Skip to main content
Participating Frequently
June 25, 2019
Question

2016 to 2018 migration with clustered scheduled tasks?

  • June 25, 2019
  • 2 replies
  • 1448 views

has anyone done this?  We just upgraded one of our nodes and CFIDE is giving us an db incompatibility error.

Windows 2016 Server

MSSQL Server 2017 cu13

CF2016 Enterprise

CF2018 Enterprise

the clustered scheduled tasks was initialized with CF2016

we try to go to CF2018's CFIDE Scheduled Tasks and attach this new node to the existing datasource for the cluster that has existing running schema.

is it possible CF2018's clustered scheduler is not compatible with CF2016's clustered scheduler?

    This topic has been closed for replies.

    2 replies

    BKBK
    Community Expert
    May 20, 2022

    the clustered scheduled tasks was initialized with CF2016

     

    we try to go to CF2018's CFIDE Scheduled Tasks and attach this new node to the existing datasource for the cluster that has existing running schema.

     

    is it possible CF2018's clustered scheduler is not compatible with CF2016's clustered scheduler?


    By @yuliangr39032863

     

    Yes, it is possible that scheduled tasks created in ColdFusion 2016 may be incompatible with ColdFusion 2018. Likewise, scheduled tasks created in ColdFusion 2018 may be incompatible with ColdFusion 2021.

     

    The reason for the possible incompatibility is: transferring scheduled tasks between major ColdFusion versions is undocumented functionality. As such, ColdFusion cannot guarantee backward-compatibility. One reason for this is the evolution of ColdFusion. 

     

    For example, ColdFusion version X+1 may introduce a fix or improvement that affects scheduled tasks. Such a change may be absent from ColdFusion version X. So, even if you succeed in transferring scheduled tasks from CF_X to CF_X+1, there will be a risk of malfunction or error. That is perhaps what @w49369461 found.

     

    The solution is, of course, documented functionality. The ColdFusion Team should include a new feature enabling scheduled tasks to be transferred from version X to version X+1. 

    Charlie Arehart
    Community Expert
    May 20, 2022

    Bkbk, just to clarify, when you refer to "transferring" tasks between versions, note that this thread is NOT about the old miatake (that many do indeed still make) of copying the neo-cron.xml file among cf installations.

     

    Instead, this was about someone who simply had the same db defined as a dsn for both cf versions, and that dsn had been used with the cf admin feature to store clustered scheduled tasks.  They're finding THOSE tasks do not appear in the newer cf version.

     

    Perhaps you've read the other replies where I offer info on how to deal with that. As for Adobe offering solutions, I point to a couple (car, cfsetup, etc.) Each will suit some folks bettet than others.

     

    But I'd argue that the ultimate solution would be if the newer cf version could "just handle" somehow being able to use the same db holding the previously defined clustered sched tasks, from at least the immediately preceding version. I suspect there are reasons we may never get that solution. 

    /Charlie (troubleshooter, carehart. org)
    BKBK
    Community Expert
    May 21, 2022

    I don't see anyone proposing to "carry over undocumented clustering functionality",  per "the subject of this thread". 

     

    But this is another one of those where we seem at odds, which serves no one to prolong. You do you. 


     

    I don't see anyone proposing to "carry over undocumented clustering functionality",  per "the subject of this thread". 


    By @Charlie Arehart

     

    Subject of this thread: "2016 to 2018 migration with clustered scheduled tasks".

    That is what I mean by carrying over undocumented clustering functionality from one major ColdFusion version to another.

     

    Participating Frequently
    June 25, 2019

    just compared the qrtz_* table schemas between 2016's and 2018's.   they're identical..

    Participating Frequently
    June 25, 2019

    i did a tiny bit of CFIDE hacking.

    edited \cfusion\wwwroot\CFIDE\administrator\scheduler\scheduleTasks.cfm

    line 158 in the try catch block to push the exception message to efrErrorMessage

    I get the raw error on the screen :

    Couldn't retrieve job because the BLOB couldn't be deserialized: coldfusion.util.CaseInsensitiveMap; local class incompatible: stream classdesc serialVersionUID = -5469900980072247315, local class serialVersionUID = -4876788950396709071

    Participating Frequently
    June 25, 2019

    i have a gut feeling that issue is CF2016 serialized the scheduler data using JRE 8's Serializer class   whereas CF2018 is trying to deserialize that same data using JDK 11.