Jonathan Tinkham created ZEPPELIN-2659:
------------------------------------------
Summary: shiro.ini parsed twice, causing double and conflicting
instatiation
Key: ZEPPELIN-2659
URL: https://issues.apache.org/jira/browse/ZEPPELIN-2659
Project: Zeppelin
Issue Type: Bug
Components: Core
Affects Versions: 0.7.2
Reporter: Jonathan Tinkham
Priority: Minor
Zeppelin will parse {{shiro.ini}} twice upon startup: once by
{{initSecurityManager}} when instantiating a {{SecurityManager}} from the
{{IniSecurityManagerFactory}} and a second time by the
{{EnvironmentLoaderListener}} attached to the context.
The result is any object created via {{shiro.ini}} will be instantiated twice,
potentially causing conflicts. This is most notable when trying to setup
EHCache as a cache manager. EHCache uses a named cache for storage and the
first parsing of {{shiro.ini}} will create a named cache, causing the second
instantiation to fail due to the conflicting name already existing.
The can also be seen by setting the log level to DEBUG in log4j.properties, and
observing the double parsing (full logs attached).
{{DEBUG [2017-06-15 20:04:50,659] ({main} ResourceUtils.java[loadFromFile]:147)
- Opening file [/opt/zeppelin/conf/shiro.ini]...
DEBUG [2017-06-15 20:04:50,665] ({main} Ini.java[load]:342) - Parsing [users]
DEBUG [2017-06-15 20:04:50,667] ({main} Ini.java[load]:342) - Parsing [main]
DEBUG [2017-06-15 20:04:50,671] ({main} Ini.java[load]:342) - Parsing [roles]
DEBUG [2017-06-15 20:04:50,672] ({main} Ini.java[load]:342) - Parsing [urls]
DEBUG [2017-06-15 20:04:50,674] ({main}
IniFactorySupport.java[createInstance]:122) - Creating instance from Ini
[sections=users,main,roles,urls]
...
DEBUG [2017-06-15 20:04:55,719] ({main} ResourceUtils.java[loadFromFile]:147) -
Opening file [/opt/zeppelin/conf/shiro.ini]...
DEBUG [2017-06-15 20:04:55,720] ({main} Ini.java[load]:342) - Parsing [users]
DEBUG [2017-06-15 20:04:55,721] ({main} Ini.java[load]:342) - Parsing [main]
DEBUG [2017-06-15 20:04:55,725] ({main} Ini.java[load]:342) - Parsing [roles]
DEBUG [2017-06-15 20:04:55,725] ({main} Ini.java[load]:342) - Parsing [urls]
DEBUG [2017-06-15 20:04:55,728] ({main}
IniFactorySupport.java[createInstance]:122) - Creating instance from Ini
[sections=users,main,roles,urls]}}
The {{WebEnvironment}} created in the {{EnvironmentLoaderListener}} creates a
{{SecurityManager}} instance that is usable, making {{initSecurityManager}}
redundant, but does require adding an initParameter to the filter,
{{staticSecurityManagerEnabled}}, which will perform the
{{SecurityUtils.setSecurityManager}} and populate the static memory singleton
needed.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)