On Mon, Mar 11, 2019 at 9:19 PM Cheng Fang <cfang@redhat.com> wrote:
For ejb3 subsystem, 2 attributes (bean-cache and cache-container under passivation-store element) changed their access-type from read-only to read-write.  The change occurred in WildFly 16 (Dec 20, 2018).  I created WFLY-11778 (Missing ejb3 transformer tests) to track the ejb3 part of this issue.

Since there is no structural changes, and the new one has wider access-type, any operations from old version HC should have no problem.  Do we still need transformer tests in this case?

A transformer is about a WF 16 master controlling a 15 or earlier HC. So it's about dealing with the fact that the master can accept a write-attribute for those attributes but if it tries to tell the legacy HC to apply the operation, that HC cannot.

What does the failure look like if you have a WF 16 master and the subordinate host is running 15 or earlier and you use write-attribute for those? I suspect it looks ok.

It will fail because on the 15 host those attributes are not writable. And that's fine; it has to fail. What a transformer would do in a case like this would be to fail with a more understandable failure message (since the master knows the real problem and can tailor the message, whereas the legacy host just gets data it doesn't understand and might fail in an odd way.) But in this case I think the legacy host would fail in an understandable way, saying the attribute is not writable. A transformer on the master probably wouldn't be written to produce a much better message.


Thanks,
Cheng



On Fri, Feb 8, 2019 at 10:41 AM Brian Stansberry <brian.stansberry@redhat.com> wrote:


On Fri, Feb 8, 2019 at 9:07 AM Kabir Khan <kkhan@redhat.com> wrote:
TL;DR: It looks like we may be missing transformer tests in the following subsystems: ejb3, infinispan, jca, logging, undertow. I've not dug in beyond that.

Full:
We have been using ModelTestControllerVersion.EAP_7_2_0_TEMP (containing WF14) for transformer testing until EAP 7.2.0 was released. [1] renames this to be EAP_7_2_0 and points to EAP 7.2.0.

In addition I have some WIP to update the full mixed domain and subsystem tests to do the same. When doing this I noticed that the only subsystem that had transformer tests referencing EAP_7_2_0_TEMP was modcluster. I knew messaging-activemq had some changes, which Emmanuel is looking at.

I've run the model comparison tool against master/7.2.0: and see changes which might be significant:

====== Resource root address: ["subsystem" => "ejb3"] - Current version: 0.0.0; legacy version: 5.0.0 =======
--- Problems for relative address to root ["passivation-store" => "*"]:
Different 'access-type' for attribute 'bean-cache'. Current: "read-write"; legacy: "read-only"
Different 'access-type' for attribute 'cache-container'. Current: "read-write"; legacy: "read-only"

====== Resource root address: ["subsystem" => "infinispan"] - Current version: 0.0.0; legacy version: 8.0.0 =======
* --- Problems for relative address to root ["remote-cache-container" => "*"]:
Different 'default' for attribute 'protocol-version'. Current: "2.9"; legacy: "2.8"


====== Resource root address: ["subsystem" => "jca"] - Current version: 0.0.0; legacy version: 5.0.0 =======
--- Problems for relative address to root ["distributed-workmanager" => "*","long-running-threads" => "*"]:
* Missing attributes in current: [handoff-executor]; missing in legacy []
* Missing parameters for operation 'add' in current: [handoff-executor]; missing in legacy []
--- Problems for relative address to root ["distributed-workmanager" => "*","short-running-threads" => "*"]:
* Missing attributes in current: [handoff-executor]; missing in legacy []
* Missing parameters for operation 'add' in current: [handoff-executor]; missing in legacy []
--- Problems for relative address to root ["workmanager" => "*","long-running-threads" => "*"]:
* Missing attributes in current: [handoff-executor]; missing in legacy []
* Missing parameters for operation 'add' in current: [handoff-executor]; missing in legacy []
--- Problems for relative address to root ["workmanager" => "*","short-running-threads" => "*"]:
* Missing attributes in current: [handoff-executor]; missing in legacy []
* Missing parameters for operation 'add' in current: [handoff-executor]; missing in legacy []
--- Problems for relative address to root ["workmanager" => "default","long-running-threads" => "*"]:
* Missing attributes in current: [handoff-executor]; missing in legacy []
* Missing parameters for operation 'add' in current: [handoff-executor]; missing in legacy []
--- Problems for relative address to root ["workmanager" => "default","short-running-threads" => "*"]:
* Missing attributes in current: [handoff-executor]; missing in legacy []
* Missing parameters for operation 'add' in current: [handoff-executor]; missing in legacy []


====== Resource root address: ["subsystem" => "logging"] - Current version: 0.0.0; legacy version: 7.0.0 =======
* --- Problems for relative address to root ["json-formatter" => "*"]:
Different 'default' for attribute 'record-delimiter'. Current: "
"; legacy: ""
* --- Problems for relative address to root ["logging-profile" => "*","json-formatter" => "*"]:
Different 'default' for attribute 'record-delimiter'. Current: "
"; legacy: ""
* --- Problems for relative address to root ["logging-profile" => "*","xml-formatter" => "*"]:
Different 'default' for attribute 'record-delimiter'. Current: "
"; legacy: ""
* --- Problems for relative address to root ["xml-formatter" => "*"]:
Different 'default' for attribute 'record-delimiter'. Current: "
"; legacy: ""


====== Resource root address: ["subsystem" => "undertow"] - Current version: 0.0.0; legacy version: 7.0.0 =======
--- Problems for relative address to root ["application-security-domain" => "*"]:
* Missing attributes in current: []; missing in legacy [enable-jaspi, integrated-jaspi]
* Missing parameters for operation 'add' in current: []; missing in legacy [enable-jaspi, integrated-jaspi]

Although WF16 doesn't provide any domain mode guarantees for previous releases, this will one day end up as a product release and then it is important that we have these tests in place. It is easier to add them as we go along than to retrofit them when that time comes.

Thanks, Kabir for running the check and for the heads up!

This needs to be correct in WildFly regardless of any EAP requirements.  I believe the domain mode transformation chain from WF 14 all the way back to at least 11 is correct. There is no reason it shouldn't be extended to 16.

Even though any fix would only come in 16, the correct way to write the transformation for something that changed in 15 is as if it had been done in 15. Write the transformation code for 15 -> 14 (constants, method names etc) and then if there are further changes for 16 -> 15, do those. Let future readers of the code read code that reflects the history of the management API.
_______________________________________________
wildfly-dev mailing list
wildfly-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/wildfly-dev


--
Brian Stansberry
Manager, Senior Principal Software Engineer
Red Hat
_______________________________________________
wildfly-dev mailing list
wildfly-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/wildfly-dev


--
Brian Stansberry
Manager, Senior Principal Software Engineer
Red Hat