[ 
https://issues.apache.org/jira/browse/KNOX-2638?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Attila Magyar updated KNOX-2638:
--------------------------------
    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)
{code:java}
cp ./conf/topologies/test.xml ./conf/topologies/test2.xml {code}
3. blockSemicolon/blockBackslash/blockNonAscii are no longer in the orignial 
test.xml output:
{code:java}
curl -u admin:admin-password  -k -X GET 
https://localhost:8443/gateway/admin/api/v1/topologies/test | grep  
blockSemicolon {code}
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.

 
{code:java}
@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);
  }
} {code}
 

 

> Shiro propererties are missing after topology deployment
> --------------------------------------------------------
>
>                 Key: KNOX-2638
>                 URL: https://issues.apache.org/jira/browse/KNOX-2638
>             Project: Apache Knox
>          Issue Type: Bug
>            Reporter: Attila Magyar
>            Assignee: Attila Magyar
>            Priority: Major
>
> 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)
> {code:java}
> cp ./conf/topologies/test.xml ./conf/topologies/test2.xml {code}
> 3. blockSemicolon/blockBackslash/blockNonAscii are no longer in the orignial 
> test.xml output:
> {code:java}
> curl -u admin:admin-password  -k -X GET 
> https://localhost:8443/gateway/admin/api/v1/topologies/test | grep  
> blockSemicolon {code}
> 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.
>  
> {code:java}
> @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);
>   }
> } {code}
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to