Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
-
None
Description
STR:
1. Have an existing topology (test.xml), see if blockSemicolon/blockBackslash/blockNonAscii are in the get topology output:
curl -u admin:admin-password -k -X GET
https://localhost:8443/gateway/admin/api/v1/topologies/test
grep blockSemicolon <name>main.invalidRequest.blockSemicolon</name> 2. Deploy a new topology file (test2.xml) cp ./conf/topologies/test.xml ./conf/topologies/test2.xml 3. blockSemicolon/blockBackslash/blockNonAscii are no longer in the orignial test.xml output:
curl -u admin:admin-password -k -X GET https://localhost:8443/gateway/admin/api/v1/topologies/test | grep blockSemicolon
This also causes some flakiness in tests like GatewayAdminTopologyFuncTest. |
The reason why these shiro properties are missing is because we only add these after a topology deployment to the in memory representation of a topology. When we deploy a new topology we also reload all the existing topologies but only redeploy the newly added one.
@Override public void reloadTopologies() { try { synchronized (this) { Map<File, Topology> oldTopologies = topologies; Map<File, Topology> newTopologies = loadTopologies(topologiesDirectory); // <= parse everything from disk List<TopologyEvent> events = createChangeEvents(oldTopologies, newTopologies); topologies = newTopologies; notifyChangeListeners(events); // <= this will redeploy the new topology and add the shiro properties, but those will be missing from all other existing topologies } } catch (Exception e) { // Maybe it makes sense to throw exception log.failedToReloadTopologies(e); } }
Attachments
Issue Links
- is duplicated by
-
KNOX-2564 Intermittent failure of GatewayAdminTopologyFuncTest#testPutTopology()
- Resolved
- links to