[ 
https://issues.apache.org/jira/browse/YUNIKORN-2287?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17803186#comment-17803186
 ] 

Chia-Ping Tsai commented on YUNIKORN-2287:
------------------------------------------

{quote}
The new feature was not documented or announced. This was discovered as part of 
the documentation steps. We can use option 2 without an issue
{quote}
{quote}
I would also highly doubt that this is used by anyone yet. It was added for 
extremely large setups 1000's of queues or a setup with a large number of user 
limits objects. We have had nobody run into that yet outside of our, cloudera, 
internal testing setups.
{quote}

I'd like to wait [~sidkrishna] to share the use cases. If there is no users, my 
favor solution was to get rid of such feature directly.

{quote}
option 3 is always safe. For option 3 we could turn it around: if the base64 
decode does not fail log a message and use the decoded data. If it fails ignore 
it. Means we do not have to decompress twice, reusing the decompressor might be 
a bit risky when it failed the first time. We can easily remove that step in 
the next release.
{quote}

We all love trade-off story :)

Personally, we should pick up either compatibility or simplification. Means 
that we should support both base64-encoding and double base64-encoding. Or we 
remove those supports as the feature may be used by nobody currently.

> Decompress function doesn't need to decode base64
> -------------------------------------------------
>
>                 Key: YUNIKORN-2287
>                 URL: https://issues.apache.org/jira/browse/YUNIKORN-2287
>             Project: Apache YuniKorn
>          Issue Type: Bug
>          Components: shim - kubernetes
>            Reporter: PoAn Yang
>            Assignee: PoAn Yang
>            Priority: Major
>              Labels: e2e, pull-request-available
>
> I'm working on https://issues.apache.org/jira/browse/YUNIKORN-2267. I added 
> an example as following, but compression configmap doesn't work.
>  
> 1. Use gzip to compress and use base64 to encode the config
> ```
> echo "
> partitions:
>   - name: default
>     placementrules:
>       - name: tag
>         value: namespace
>         create: true
>     queues:
>       - name: root
>         submitacl: '*'
>         queues:
>           - name: parent
>             submitacl: '*'" | gzip | base64
> ```
> 2. Set the result to `queues.yaml.gz` in binaryData field.
>  
> Finally, we can see an error log in scheduler:
> ```
> 2023-12-22T15:32:15.913Z    ERROR    shim.config    conf/schedulerconf.go:458 
>    failed to decode schedulerConfig entry    \{"error": "illegal base64 data 
> at input byte 0"}
> github.com/apache/yunikorn-k8shim/pkg/conf.Decompress
>     github.com/apache/yunikorn-k8shim/pkg/conf/schedulerconf.go:458
> github.com/apache/yunikorn-k8shim/pkg/conf.FlattenConfigMaps
>     github.com/apache/yunikorn-k8shim/pkg/conf/schedulerconf.go:495
> github.com/apache/yunikorn-k8shim/pkg/cache.(*Context).triggerReloadConfig
>     github.com/apache/yunikorn-k8shim/pkg/cache/context.go:496
> github.com/apache/yunikorn-k8shim/pkg/cache.(*Context).updateConfigMaps
>     github.com/apache/yunikorn-k8shim/pkg/cache/context.go:394
> k8s.io/client-go/tools/cache.ResourceEventHandlerFuncs.OnUpdate
>     k8s.io/[email protected]/tools/cache/controller.go:250
> k8s.io/client-go/tools/cache.FilteringResourceEventHandler.OnUpdate
>     k8s.io/[email protected]/tools/cache/controller.go:315
> k8s.io/client-go/tools/cache.(*processorListener).run.func1
>     k8s.io/[email protected]/tools/cache/shared_informer.go:971
> k8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1
>     k8s.io/[email protected]/pkg/util/wait/backoff.go:226
> k8s.io/apimachinery/pkg/util/wait.BackoffUntil
>     k8s.io/[email protected]/pkg/util/wait/backoff.go:227
> k8s.io/apimachinery/pkg/util/wait.JitterUntil
>     k8s.io/[email protected]/pkg/util/wait/backoff.go:204
> k8s.io/apimachinery/pkg/util/wait.Until
>     k8s.io/[email protected]/pkg/util/wait/backoff.go:161
> k8s.io/client-go/tools/cache.(*processorListener).run
>     k8s.io/[email protected]/tools/cache/shared_informer.go:967
> k8s.io/apimachinery/pkg/util/wait.(*Group).Start.func1
>     k8s.io/[email protected]/pkg/util/wait/wait.go:72
> ```
>  
> I think the root cause is that the golang object is already decoded, so we 
> don't need to decode it again.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to