Every interface type in cluster.xml has a required version parameter, but I don't see that version being used anywhere in the code. What is the purpose of the versions in the below example snippet from cluster.xml?
<interfaces> <interface type="readonly" endpoint="hftp://sandbox.hortonworks.com:50070" version="2.2.0"/> <interface type="write" endpoint="hdfs://sandbox.hortonworks.com:8020" version="2.2.0"/> <interface type="execute" endpoint="sandbox.hortonworks.com:8050" version="2.2.0"/> <interface type="workflow" endpoint="http://sandbox.hortonworks.com:11000/oozie/" version="4.0.0"/> <interface type="messaging" endpoint="tcp://sandbox.hortonworks.com:61616?daemon=true" version="5.1.6"/>
I also see a version in the process XML specification. Where does this version get used?
<workflow name="myProcess" version="2.0.0" engine="oozie" path="/apps/myApp/config/step1/"/>
@Vladimir Zlatkin The main purpose of using version with interfaces in cluster entity is to provide the hint what is the current runtime version of each interface.
For example in a cluster, source and target cluster entity can be submitted (for replication) where interfaces of target entity can be of different versions than source entity so it is good practice that user must specify appropriate version as well.
This is a hint for the user and is not currently used or validated by Falcon in any capacity afaik. Be aware that unlike process and feed entities, cluster definitions cannot be updated. This means that when you upgrade HDP your cluster interface versions will be out of date.