Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
A
autoradio
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
ale
autoradio
Commits
19da02b9
Commit
19da02b9
authored
5 years ago
by
ale
Browse files
Options
Downloads
Patches
Plain Diff
Properly stop all services on error, and improve logging
parent
49d17654
No related branches found
Branches containing commit
No related tags found
1 merge request
!1
v2.0
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
node/dns.go
+12
-6
12 additions, 6 deletions
node/dns.go
node/http.go
+15
-9
15 additions, 9 deletions
node/http.go
node/server.go
+11
-5
11 additions, 5 deletions
node/server.go
node/status.go
+2
-0
2 additions, 0 deletions
node/status.go
with
40 additions
and
20 deletions
node/dns.go
+
12
−
6
View file @
19da02b9
...
...
@@ -203,16 +203,22 @@ func ednsFromRequest(req, m *dns.Msg) {
// Wrapper to make the dns.Server match the genericServer interface.
type
dnsServer
struct
{
*
dns
.
Server
name
string
}
func
newDNSServer
(
addr
,
proto
string
,
h
dns
.
Handler
)
*
dnsServer
{
return
&
dnsServer
{
&
dns
.
Server
{
Addr
:
addr
,
Net
:
proto
,
Handler
:
h
,
}}
func
newDNSServer
(
name
,
addr
,
proto
string
,
h
dns
.
Handler
)
*
dnsServer
{
return
&
dnsServer
{
Server
:
&
dns
.
Server
{
Addr
:
addr
,
Net
:
proto
,
Handler
:
h
,
},
name
:
name
,
}
}
func
(
s
*
dnsServer
)
Name
()
string
{
return
s
.
name
}
func
(
s
*
dnsServer
)
Serve
()
error
{
return
s
.
Server
.
ListenAndServe
()
}
...
...
This diff is collapsed.
Click to expand it.
node/http.go
+
15
−
9
View file @
19da02b9
...
...
@@ -246,19 +246,25 @@ func withLocalhost(h http.Handler) http.Handler {
// Wrapper to make an http.Server match the genericServer interface.
type
httpServer
struct
{
*
http
.
Server
name
string
}
func
newHTTPServer
(
addr
string
,
h
http
.
Handler
)
*
httpServer
{
return
&
httpServer
{
&
http
.
Server
{
Addr
:
addr
,
Handler
:
h
,
ReadTimeout
:
10
*
time
.
Second
,
ReadHeaderTimeout
:
3
*
time
.
Second
,
WriteTimeout
:
10
*
time
.
Second
,
IdleTimeout
:
30
*
time
.
Second
,
}}
func
newHTTPServer
(
name
,
addr
string
,
h
http
.
Handler
)
*
httpServer
{
return
&
httpServer
{
Server
:
&
http
.
Server
{
Addr
:
addr
,
Handler
:
h
,
ReadTimeout
:
10
*
time
.
Second
,
ReadHeaderTimeout
:
3
*
time
.
Second
,
WriteTimeout
:
10
*
time
.
Second
,
IdleTimeout
:
30
*
time
.
Second
,
},
name
:
name
,
}
}
func
(
s
*
httpServer
)
Name
()
string
{
return
s
.
name
}
func
(
s
*
httpServer
)
Serve
()
error
{
err
:=
s
.
Server
.
ListenAndServe
()
if
err
==
http
.
ErrServerClosed
{
...
...
This diff is collapsed.
Click to expand it.
node/server.go
+
11
−
5
View file @
19da02b9
...
...
@@ -2,6 +2,7 @@ package node
import
(
"fmt"
"log"
"net"
"strconv"
"sync"
...
...
@@ -9,6 +10,7 @@ import (
// A genericServer is just something that can be started and stopped.
type
genericServer
interface
{
Name
()
string
Serve
()
error
Stop
()
}
...
...
@@ -33,10 +35,14 @@ func buildServer(servers ...genericServer) *Server {
ms
.
wg
.
Add
(
1
)
go
func
(
s
genericServer
)
{
defer
ms
.
wg
.
Done
()
log
.
Printf
(
"starting network service: %s"
,
s
.
Name
())
err
:=
s
.
Serve
()
if
err
!=
nil
{
werr
:=
fmt
.
Errorf
(
"%s: %v"
,
s
.
Name
(),
err
)
select
{
case
ms
.
errCh
<-
err
:
case
ms
.
errCh
<-
werr
:
// First error, stop all other services.
ms
.
Stop
()
default
:
}
}
...
...
@@ -78,13 +84,13 @@ func NewServer(n *Node, domain string, nameservers []string, publicAddrs []net.I
servers
:=
[]
genericServer
{
newStatusServer
(
mkaddr
(
peerAddr
,
gossipPort
),
n
.
statusMgr
),
newHTTPServer
(
fmt
.
Sprintf
(
":%d"
,
metricsPort
),
newMetricsHandler
()),
newHTTPServer
(
"metrics"
,
fmt
.
Sprintf
(
":%d"
,
metricsPort
),
newMetricsHandler
()),
}
for
_
,
ip
:=
range
publicAddrs
{
servers
=
append
(
servers
,
newHTTPServer
(
mkaddr
(
ip
,
httpPort
),
httpHandler
),
newDNSServer
(
mkaddr
(
ip
,
dnsPort
),
"udp"
,
dnsHandler
),
newDNSServer
(
mkaddr
(
ip
,
dnsPort
),
"tcp"
,
dnsHandler
),
newHTTPServer
(
"main"
,
mkaddr
(
ip
,
httpPort
),
httpHandler
),
newDNSServer
(
"dns(udp)"
,
mkaddr
(
ip
,
dnsPort
),
"udp"
,
dnsHandler
),
newDNSServer
(
"dns(tcp)"
,
mkaddr
(
ip
,
dnsPort
),
"tcp"
,
dnsHandler
),
)
}
return
buildServer
(
servers
...
)
...
...
This diff is collapsed.
Click to expand it.
node/status.go
+
2
−
0
View file @
19da02b9
...
...
@@ -185,6 +185,8 @@ func newStatusServer(addr string, statusMgr *statusManager) *statusServer {
}
}
func
(
s
*
statusServer
)
Name
()
string
{
return
"status"
}
func
(
s
*
statusServer
)
Serve
()
error
{
l
,
err
:=
net
.
Listen
(
"tcp"
,
s
.
addr
)
if
err
!=
nil
{
...
...
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
register
or
sign in
to comment