Within one of our Appian instances we are getting the 'Illegal attempt to ch

Within one of our Appian instances we are getting the 'Illegal attempt to change an input to an output' errors during deployment of the plugins. This is happening for plugins we have developed and other plugins that we didn't develop. None of the CDT or the parameters to the plugins have changed in quite some time. In order to figure out / resolve the issue, I have two questions regarding this problem.

First, can anyone tell me entries I can add to appian_log4j.properties file that will help me determine exactly what differences Appian thinks there are between the currently deployed plugin and the plugin attempting to deploy? The message tells me the parameter/CDT name, but what I need to know more specific details about what is different.

Second, is there some utility or option that can be used to completely remove a plugin from Appian so the latest plugin can be deployed successfully without having to change the plugin's key?

Thanks

OriginalPostID-145909

OriginalPostID-145909

  Discussion posts and replies are publicly visible

Parents
  • Keep in mind that deleting a CDT deployed by a plug-in under the Data Management Tab would cause the issue you're seeing. CDTs created by a plug-in shouldn't be deleted unless you are really going to make a chance to them.

    This is because:

    1. When your first register your plug-in Appian registers it as a smart service with an input of type MY_CDT

    2. When you delete a CDT the original version is deprecated and renamed to MY_CDT^1 but the local ID remains the same

    3. At this point internally Appian knows your plug-in uses a node input of type MY_CDT^1 (the original CDT)

    4. You later decide to re-upload the CDT with changes or without. This results in a new local ID assigned to the current version of the CDT called MY_CDT which is different from the original ID of the CDT now called MY_CDT^1

    5. When you restart the application server Appian reads the annotation in your smart service and sees that you indicate the smart service references MY_CDT, but remember MY_CDT is now the latest version which has a different local ID. Appian then checks what it registered in step #1 and confirms that originally the smart service was configured to use the local ID of MY_CDT^1 (which back then was called MY_CDT) but now you're trying to deploy it to use MY_CDT with a different local ID.

    Assuming the deletion wasn't intentional the workaround is to annotate your plug-in to make it point to MY_CDT^1

              @Input(required = Required.ALWAYS)
              @Name("myInput")
              @Type(namespace = "types.appiancorp.com/ps", name = "MY_CDT^1")
Reply
  • Keep in mind that deleting a CDT deployed by a plug-in under the Data Management Tab would cause the issue you're seeing. CDTs created by a plug-in shouldn't be deleted unless you are really going to make a chance to them.

    This is because:

    1. When your first register your plug-in Appian registers it as a smart service with an input of type MY_CDT

    2. When you delete a CDT the original version is deprecated and renamed to MY_CDT^1 but the local ID remains the same

    3. At this point internally Appian knows your plug-in uses a node input of type MY_CDT^1 (the original CDT)

    4. You later decide to re-upload the CDT with changes or without. This results in a new local ID assigned to the current version of the CDT called MY_CDT which is different from the original ID of the CDT now called MY_CDT^1

    5. When you restart the application server Appian reads the annotation in your smart service and sees that you indicate the smart service references MY_CDT, but remember MY_CDT is now the latest version which has a different local ID. Appian then checks what it registered in step #1 and confirms that originally the smart service was configured to use the local ID of MY_CDT^1 (which back then was called MY_CDT) but now you're trying to deploy it to use MY_CDT with a different local ID.

    Assuming the deletion wasn't intentional the workaround is to annotate your plug-in to make it point to MY_CDT^1

              @Input(required = Required.ALWAYS)
              @Name("myInput")
              @Type(namespace = "types.appiancorp.com/ps", name = "MY_CDT^1")
Children
No Data