Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
小 白蛋
Nomad
Commits
c0bbb136
Commit
c0bbb136
authored
7 years ago
by
Alex Dadgar
Browse files
Options
Download
Email Patches
Plain Diff
Fix force deadline notification
parent
91749a92
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
nomad/drainer/drain_heap.go
+2
-7
nomad/drainer/drain_heap.go
nomad/drainer/drain_heap_test.go
+31
-0
nomad/drainer/drain_heap_test.go
nomad/drainer_int_test.go
+1
-1
nomad/drainer_int_test.go
with
34 additions
and
8 deletions
+34
-8
nomad/drainer/drain_heap.go
+
2
-
7
View file @
c0bbb136
...
...
@@ -54,19 +54,14 @@ func (d *deadlineHeap) watch() {
case
<-
timer
.
C
:
default
:
}
var
nextDeadline
time
.
Time
defer
timer
.
Stop
()
var
nextDeadline
time
.
Time
for
{
select
{
case
<-
d
.
ctx
.
Done
()
:
return
case
<-
timer
.
C
:
if
nextDeadline
.
IsZero
()
{
continue
}
var
batch
[]
string
d
.
mu
.
Lock
()
...
...
@@ -96,7 +91,7 @@ func (d *deadlineHeap) watch() {
continue
}
if
!
deadline
.
Equal
(
nextDeadline
)
{
if
deadline
.
IsZero
()
||
!
deadline
.
Equal
(
nextDeadline
)
{
timer
.
Reset
(
deadline
.
Sub
(
time
.
Now
()))
nextDeadline
=
deadline
}
...
...
This diff is collapsed.
Click to expand it.
nomad/drainer/drain_heap_test.go
+
31
-
0
View file @
c0bbb136
...
...
@@ -147,3 +147,34 @@ func TestDeadlineHeap_WatchCoalesce(t *testing.T) {
case
<-
time
.
After
(
100
*
time
.
Millisecond
)
:
}
}
func
TestDeadlineHeap_MultipleForce
(
t
*
testing
.
T
)
{
t
.
Parallel
()
require
:=
require
.
New
(
t
)
h
:=
NewDeadlineHeap
(
context
.
Background
(),
1
*
time
.
Second
)
nodeID
:=
"1"
deadline
:=
time
.
Time
{}
h
.
Watch
(
nodeID
,
deadline
)
var
batch
[]
string
select
{
case
batch
=
<-
h
.
NextBatch
()
:
case
<-
time
.
After
(
10
*
time
.
Millisecond
)
:
t
.
Fatal
(
"timeout"
)
}
require
.
Len
(
batch
,
1
)
require
.
Equal
(
nodeID
,
batch
[
0
])
nodeID
=
"2"
h
.
Watch
(
nodeID
,
deadline
)
select
{
case
batch
=
<-
h
.
NextBatch
()
:
case
<-
time
.
After
(
10
*
time
.
Millisecond
)
:
t
.
Fatal
(
"timeout"
)
}
require
.
Len
(
batch
,
1
)
require
.
Equal
(
nodeID
,
batch
[
0
])
}
This diff is collapsed.
Click to expand it.
nomad/drainer_int_test.go
+
1
-
1
View file @
c0bbb136
...
...
@@ -727,7 +727,7 @@ func TestDrainer_Batch_Force(t *testing.T) {
require
.
Nil
(
msgpackrpc
.
CallWithCodec
(
codec
,
"Node.UpdateDrain"
,
drainReq
,
&
drainResp
))
// Make sure the batch job is migrated
testutil
.
AssertUntil
(
500
*
time
.
Millisecond
,
func
()
(
bool
,
error
)
{
testutil
.
WaitForResult
(
func
()
(
bool
,
error
)
{
allocs
,
err
:=
state
.
AllocsByNode
(
nil
,
n1
.
ID
)
if
err
!=
nil
{
return
false
,
err
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help