Commit 33385214 authored by wenlxie's avatar wenlxie

recycle pod can't get the event since the channel been closed

parent 2828db8f
...@@ -97,7 +97,10 @@ func internalRecycleVolumeByWatchingPodUntilCompletion(pvName string, pod *v1.Po ...@@ -97,7 +97,10 @@ func internalRecycleVolumeByWatchingPodUntilCompletion(pvName string, pod *v1.Po
// Now only the old pod or the new pod run. Watch it until it finishes // Now only the old pod or the new pod run. Watch it until it finishes
// and send all events on the pod to the PV // and send all events on the pod to the PV
for { for {
event := <-podCh event, ok := <-podCh
if !ok {
return fmt.Errorf("recycler pod %q watch channel had been closed", pod.Name)
}
switch event.Object.(type) { switch event.Object.(type) {
case *v1.Pod: case *v1.Pod:
// POD changed // POD changed
...@@ -199,13 +202,14 @@ func (c *realRecyclerClient) WatchPod(name, namespace string, stopChannel chan s ...@@ -199,13 +202,14 @@ func (c *realRecyclerClient) WatchPod(name, namespace string, stopChannel chan s
return nil, err return nil, err
} }
eventCh := make(chan watch.Event, 0) eventCh := make(chan watch.Event, 30)
go func() { go func() {
defer eventWatch.Stop() defer eventWatch.Stop()
defer podWatch.Stop() defer podWatch.Stop()
defer close(eventCh) defer close(eventCh)
var podWatchChannelClosed bool
var eventWatchChannelClosed bool
for { for {
select { select {
case _ = <-stopChannel: case _ = <-stopChannel:
...@@ -213,15 +217,19 @@ func (c *realRecyclerClient) WatchPod(name, namespace string, stopChannel chan s ...@@ -213,15 +217,19 @@ func (c *realRecyclerClient) WatchPod(name, namespace string, stopChannel chan s
case podEvent, ok := <-podWatch.ResultChan(): case podEvent, ok := <-podWatch.ResultChan():
if !ok { if !ok {
return podWatchChannelClosed = true
} else {
eventCh <- podEvent
} }
eventCh <- podEvent
case eventEvent, ok := <-eventWatch.ResultChan(): case eventEvent, ok := <-eventWatch.ResultChan():
if !ok { if !ok {
return eventWatchChannelClosed = true
} else {
eventCh <- eventEvent
} }
eventCh <- eventEvent }
if podWatchChannelClosed && eventWatchChannelClosed {
break
} }
} }
}() }()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment