Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
postgres-operator
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Package registry
Model registry
Operate
Terraform modules
Analyze
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
GitHub Mirror
zalando
postgres-operator
Commits
dad8e2f4
Commit
dad8e2f4
authored
Aug 15, 2017
by
Murat Kabilov
Browse files
Options
Downloads
Patches
Plain Diff
make cluster event queue consumption non-blocking
parent
d2828e5e
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
pkg/controller/postgresql.go
+17
-16
17 additions, 16 deletions
pkg/controller/postgresql.go
with
17 additions
and
16 deletions
pkg/controller/postgresql.go
+
17
−
16
View file @
dad8e2f4
...
@@ -142,13 +142,9 @@ func (c *Controller) addCluster(lg *logrus.Entry, clusterName spec.NamespacedNam
...
@@ -142,13 +142,9 @@ func (c *Controller) addCluster(lg *logrus.Entry, clusterName spec.NamespacedNam
return
cl
return
cl
}
}
func
(
c
*
Controller
)
processEvent
(
obj
interface
{})
error
{
func
(
c
*
Controller
)
processEvent
(
event
spec
.
ClusterEvent
)
{
var
clusterName
spec
.
NamespacedName
var
clusterName
spec
.
NamespacedName
event
,
ok
:=
obj
.
(
spec
.
ClusterEvent
)
if
!
ok
{
return
fmt
.
Errorf
(
"could not cast to ClusterEvent"
)
}
lg
:=
c
.
logger
.
WithField
(
"worker"
,
event
.
WorkerID
)
lg
:=
c
.
logger
.
WithField
(
"worker"
,
event
.
WorkerID
)
if
event
.
EventType
==
spec
.
EventAdd
||
event
.
EventType
==
spec
.
EventSync
{
if
event
.
EventType
==
spec
.
EventAdd
||
event
.
EventType
==
spec
.
EventSync
{
...
@@ -166,7 +162,7 @@ func (c *Controller) processEvent(obj interface{}) error {
...
@@ -166,7 +162,7 @@ func (c *Controller) processEvent(obj interface{}) error {
case
spec
.
EventAdd
:
case
spec
.
EventAdd
:
if
clusterFound
{
if
clusterFound
{
lg
.
Debugf
(
"cluster already exists"
)
lg
.
Debugf
(
"cluster already exists"
)
return
nil
return
}
}
lg
.
Infof
(
"creation of the cluster started"
)
lg
.
Infof
(
"creation of the cluster started"
)
...
@@ -177,7 +173,7 @@ func (c *Controller) processEvent(obj interface{}) error {
...
@@ -177,7 +173,7 @@ func (c *Controller) processEvent(obj interface{}) error {
cl
.
Error
=
fmt
.
Errorf
(
"could not create cluster: %v"
,
err
)
cl
.
Error
=
fmt
.
Errorf
(
"could not create cluster: %v"
,
err
)
lg
.
Error
(
cl
.
Error
)
lg
.
Error
(
cl
.
Error
)
return
nil
return
}
}
lg
.
Infoln
(
"cluster has been created"
)
lg
.
Infoln
(
"cluster has been created"
)
...
@@ -186,13 +182,13 @@ func (c *Controller) processEvent(obj interface{}) error {
...
@@ -186,13 +182,13 @@ func (c *Controller) processEvent(obj interface{}) error {
if
!
clusterFound
{
if
!
clusterFound
{
lg
.
Warnln
(
"cluster does not exist"
)
lg
.
Warnln
(
"cluster does not exist"
)
return
nil
return
}
}
if
err
:=
cl
.
Update
(
event
.
NewSpec
);
err
!=
nil
{
if
err
:=
cl
.
Update
(
event
.
NewSpec
);
err
!=
nil
{
cl
.
Error
=
fmt
.
Errorf
(
"could not update cluster: %v"
,
err
)
cl
.
Error
=
fmt
.
Errorf
(
"could not update cluster: %v"
,
err
)
lg
.
Error
(
cl
.
Error
)
lg
.
Error
(
cl
.
Error
)
return
nil
return
}
}
cl
.
Error
=
nil
cl
.
Error
=
nil
lg
.
Infoln
(
"cluster has been updated"
)
lg
.
Infoln
(
"cluster has been updated"
)
...
@@ -202,12 +198,12 @@ func (c *Controller) processEvent(obj interface{}) error {
...
@@ -202,12 +198,12 @@ func (c *Controller) processEvent(obj interface{}) error {
lg
.
Infoln
(
"Deletion of the cluster started"
)
lg
.
Infoln
(
"Deletion of the cluster started"
)
if
!
clusterFound
{
if
!
clusterFound
{
lg
.
Errorf
(
"unknown cluster: %q"
,
clusterName
)
lg
.
Errorf
(
"unknown cluster: %q"
,
clusterName
)
return
nil
return
}
}
if
err
:=
cl
.
Delete
();
err
!=
nil
{
if
err
:=
cl
.
Delete
();
err
!=
nil
{
lg
.
Errorf
(
"could not delete cluster: %v"
,
err
)
lg
.
Errorf
(
"could not delete cluster: %v"
,
err
)
return
nil
return
}
}
func
()
{
func
()
{
...
@@ -238,14 +234,12 @@ func (c *Controller) processEvent(obj interface{}) error {
...
@@ -238,14 +234,12 @@ func (c *Controller) processEvent(obj interface{}) error {
if
err
:=
cl
.
Sync
();
err
!=
nil
{
if
err
:=
cl
.
Sync
();
err
!=
nil
{
cl
.
Error
=
fmt
.
Errorf
(
"could not sync cluster: %v"
,
err
)
cl
.
Error
=
fmt
.
Errorf
(
"could not sync cluster: %v"
,
err
)
lg
.
Error
(
cl
.
Error
)
lg
.
Error
(
cl
.
Error
)
return
nil
return
}
}
cl
.
Error
=
nil
cl
.
Error
=
nil
lg
.
Infof
(
"cluster has been synced"
)
lg
.
Infof
(
"cluster has been synced"
)
}
}
return
nil
}
}
func
(
c
*
Controller
)
processClusterEventsQueue
(
idx
int
,
stopCh
<-
chan
struct
{},
wg
*
sync
.
WaitGroup
)
{
func
(
c
*
Controller
)
processClusterEventsQueue
(
idx
int
,
stopCh
<-
chan
struct
{},
wg
*
sync
.
WaitGroup
)
{
...
@@ -257,13 +251,20 @@ func (c *Controller) processClusterEventsQueue(idx int, stopCh <-chan struct{},
...
@@ -257,13 +251,20 @@ func (c *Controller) processClusterEventsQueue(idx int, stopCh <-chan struct{},
}()
}()
for
{
for
{
if
_
,
err
:=
c
.
clusterEventQueues
[
idx
]
.
Pop
(
cache
.
PopProcessFunc
(
c
.
processEvent
));
err
!=
nil
{
obj
,
err
:=
c
.
clusterEventQueues
[
idx
]
.
Pop
(
cache
.
PopProcessFunc
(
func
(
interface
{})
error
{
return
nil
}))
if
err
!=
nil
{
if
err
==
cache
.
FIFOClosedError
{
if
err
==
cache
.
FIFOClosedError
{
return
return
}
}
c
.
logger
.
Errorf
(
"error when processing cluster events queue: %v"
,
err
)
c
.
logger
.
Errorf
(
"error when processing cluster events queue: %v"
,
err
)
continue
}
}
event
,
ok
:=
obj
.
(
spec
.
ClusterEvent
)
if
!
ok
{
c
.
logger
.
Errorf
(
"could not cast to ClusterEvent"
)
}
c
.
processEvent
(
event
)
}
}
}
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
sign in
to comment