Github user kwmonroe commented on a diff in the pull request:
https://github.com/apache/bigtop/pull/382#discussion_r212387730
--- Diff: bigtop-packages/src/charm/spark/layer-spark/reactive/spark.py ---
@@ -236,7 +235,8 @@ def reconfigure_spark():
# Almost all config changes should trigger a reinstall... except when
# changing the bigtop repo version. Repo version changes require the
user
# to run an action, so we skip the reinstall in that case.
- if not is_state('config.changed.bigtop_version'):
+ if not is_state('config.changed.bigtop_version') \
+ and not is_state('config.changed.spark_enable_thriftserver'):
--- End diff --
I'm a bit unsettled with this. If someone changed multiple config options
with something like `juju config spark driver_memory=2048M
spark_enable_thriftserver=true`, we'd miss the driver_mem change.
What if we adjusted the `reconfigure_spark` function to be:
```
@when('spark.started', 'config.changed')
@when_not('config.changed.bigtop_version',
'config.changed.spark_enable_thriftserver')
def reconfigure_spark():
...
```
We could then remove the check for `config.changed.bigtop_version` in the
`reconfigure_spark` handler (it gets handled anyway with the
`check_repo_version` function a few lines down). Then we could adjust your
`start_thrift` function to be:
```
@when('spark.started', 'config.changed.spark_enable_thriftserver')
def start_thrift():
enable_thrift = hookenv.config()['spark_enable_thriftserver']
if enable_thrift:
check_call(['/usr/lib/spark/sbin/start-thriftserver.sh'])
else:
check_call(['/usr/lib/spark/sbin/stop-thriftserver.sh'])
```
---