[
https://issues.apache.org/jira/browse/KNOX-2956?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sandor Molnar updated KNOX-2956:
--------------------------------
Description:
Knox's Hadoop XML resource parser is tightly coupled with another feature
called Advanced Service Discovery configuration in Cloudera Manager.
There are several issues with that extension:
- makes the code much harder to read, understand, and maintain
- occupies a separate thread to monitor other files (we already have many file
watchers, it's always good if we can do some cleanup)
- One should really oversee the correlation between them and make the right
decision when touching one or the other (for instance, when changing the
ordering of these services)
- Since this is CM specific, lots of properties were added in the relevant
Knox [CSD
files|https://github.com/cloudera/cm_ext/wiki/Service-Descriptor-Language-Reference]
to give the flexibility for our users to enable/disable services during CM
service discovery. The management of those configurations is way too complex
and has a really negative effect on user experience on Knox's configuration
page within Cloudera Manager
Therefore, I came up with an idea that will still allow us to keep the original
idea of excluding/including certain services to be discovered/included in the
generated topology files. I plan to implement the following:
- Remove the entire {{AdvancedServiceDiscoveryConfig*}} code
- Former {{gateway.auto.discovery.address}} and
{{gateway.auto.discovery.cluster}} parameters are already taken care of in HXR
parser where descriptors are handled (they need to be set in upstream
configuration locations such as the Knox CSD)
- By default, all services are disabled even if a service available service
found in the given discovery address/cluster will be added to the descriptor.
This is because of the nature of the existing logic in
{{{}SimpleDescriptorHandler{}}}. I'll add a new parameter suffix for service
called "{{{}services{}}}" which end-users can set to "{{{}a comma-separated
list of services"{}}} to include services in the generated topology (this new
HXR parameter is similar to the existing 'discoveryAddress' or
'providerConfigRef' configs)
- since this is CM-specific, Cloudera Manager users need to make sure to adopt
their CSD files accordingly
As a result, the {{.hxr}} file(s) will be self-contained and can achieve the
same functionality as we have now with the complementary
{{auto-discovery-advanced-configuration-*}} files.
was:
Knox's Hadoop XML resource parser is tightly coupled with another feature
called Advanced Service Discovery configuration in Cloudera Manager.
There are several issues with that extension:
- makes the code much harder to read, understand, and maintain
- occupies a separate thread to monitor other files (we already have many file
watchers, it's always good if we can do some cleanup)
- One should really oversee the correlation between them and make the right
decision when touching one or the other (for instance, when changing the
ordering of these services)
- Since this is CM specific, lots of properties were added in the relevant
Knox [CSD
files|https://github.com/cloudera/cm_ext/wiki/Service-Descriptor-Language-Reference]
to give the flexibility for our users to enable/disable services during CM
service discovery. The management of those configurations is way too complex
and has a really negative effect on user experience on Knox's configuration
page within Cloudera Manager
Therefore, I came up with an idea that will still allow us to keep the original
idea of excluding/including certain services to be discovered/included in the
generated topology files. I plan to implement the following:
- Remove the entire {{AdvancedServiceDiscoveryConfig*}} code
- Former {{gateway.auto.discovery.address}} and
{{gateway.auto.discovery.cluster}} parameters are already taken care of in HXR
parser where descriptors are handled (they need to be set in upstream
configuration locations such as the Knox CSD)
- By default, all services are enabled, thus every available service found in
the given discovery address/cluster will be added to the descriptor. I'll add a
new parameter suffix for service called "{{{}exclude{}}}" which end-users can
set to {{true}} if they want to exclude a particular service from the generated
topology (this new service parameter suffix is similar to the existing 'url' or
'version' suffixes)
As a result, the {{.hxr}} file(s) will be self-contained and can achieve the
same functionality as we have now with the complementary
{{auto-discovery-advanced-configuration-*}} files.
> Refactor CM-specific advanced service discovery
> -----------------------------------------------
>
> Key: KNOX-2956
> URL: https://issues.apache.org/jira/browse/KNOX-2956
> Project: Apache Knox
> Issue Type: Bug
> Affects Versions: 2.0.0, 1.6.0, 1.6.1
> Reporter: Sandor Molnar
> Assignee: Sandor Molnar
> Priority: Critical
> Fix For: 2.1.0
>
>
> Knox's Hadoop XML resource parser is tightly coupled with another feature
> called Advanced Service Discovery configuration in Cloudera Manager.
> There are several issues with that extension:
> - makes the code much harder to read, understand, and maintain
> - occupies a separate thread to monitor other files (we already have many
> file watchers, it's always good if we can do some cleanup)
> - One should really oversee the correlation between them and make the right
> decision when touching one or the other (for instance, when changing the
> ordering of these services)
> - Since this is CM specific, lots of properties were added in the relevant
> Knox [CSD
> files|https://github.com/cloudera/cm_ext/wiki/Service-Descriptor-Language-Reference]
> to give the flexibility for our users to enable/disable services during CM
> service discovery. The management of those configurations is way too complex
> and has a really negative effect on user experience on Knox's configuration
> page within Cloudera Manager
> Therefore, I came up with an idea that will still allow us to keep the
> original idea of excluding/including certain services to be
> discovered/included in the generated topology files. I plan to implement the
> following:
> - Remove the entire {{AdvancedServiceDiscoveryConfig*}} code
> - Former {{gateway.auto.discovery.address}} and
> {{gateway.auto.discovery.cluster}} parameters are already taken care of in
> HXR parser where descriptors are handled (they need to be set in upstream
> configuration locations such as the Knox CSD)
> - By default, all services are disabled even if a service available service
> found in the given discovery address/cluster will be added to the descriptor.
> This is because of the nature of the existing logic in
> {{{}SimpleDescriptorHandler{}}}. I'll add a new parameter suffix for service
> called "{{{}services{}}}" which end-users can set to "{{{}a comma-separated
> list of services"{}}} to include services in the generated topology (this new
> HXR parameter is similar to the existing 'discoveryAddress' or
> 'providerConfigRef' configs)
> - since this is CM-specific, Cloudera Manager users need to make sure to
> adopt their CSD files accordingly
> As a result, the {{.hxr}} file(s) will be self-contained and can achieve the
> same functionality as we have now with the complementary
> {{auto-discovery-advanced-configuration-*}} files.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)