Peter Bacsko created YUNIKORN-2844:
--------------------------------------

             Summary: Inject event recorder externally
                 Key: YUNIKORN-2844
                 URL: https://issues.apache.org/jira/browse/YUNIKORN-2844
             Project: Apache YuniKorn
          Issue Type: Improvement
          Components: shim - kubernetes
            Reporter: Peter Bacsko
            Assignee: Peter Bacsko


The current implementation creates an event recorder like that:

{noformat}
func GetRecorder() events.EventRecorder {
        lock.Lock()
        defer lock.Unlock()
        once.Do(func() {
                // note, the initiation of the event recorder requires on a 
workable Kubernetes client,
                // in test mode we should skip this and just use a fake 
recorder instead.
                configs := conf.GetSchedulerConf()
                if !configs.IsTestMode() {
                        k8sClient := client.NewKubeClient(configs.KubeConfig)
                        eventBroadcaster := 
events.NewBroadcaster(&events.EventSinkImpl{
                                Interface: k8sClient.GetClientSet().EventsV1()})
                        eventBroadcaster.StartRecordingToSink(make(<-chan 
struct{}))
                        eventRecorder = 
eventBroadcaster.NewRecorder(scheme.Scheme, constants.SchedulerName)
                }
        })

        return eventRecorder
}
{noformat}

The problem with this approach is that we need to indicate "test mode" in the 
config, which just complicates things. 

We can simplify this code if the recorder is set during Yunikorn initialization 
in {{NewScheduler()}}. The plugin code already does this in 
{{NewSchedulerPlugin()}} and calls 
{{events.SetRecorder(handle.EventRecorder())}}.

We should also get rid of the default fake recorder. This uses a buffered 
channel with the size of 1024. This isn't a problem now, but if a new test 
somehow ends up generating a lot of events, message sending will block. It 
might not be obvious to someone to understand why running a unit test just 
starts to block suddenly.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@yunikorn.apache.org
For additional commands, e-mail: issues-h...@yunikorn.apache.org

Reply via email to