Skip to content

Commit bfc27ff

Browse files
authored
Capture output streams of child processes (#247)
1 parent 3b3e48e commit bfc27ff

File tree

1 file changed

+32
-29
lines changed

1 file changed

+32
-29
lines changed

crossdock/main.go

Lines changed: 32 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ const (
4949
queryService = "Query"
5050

5151
cmdDir = "/cmd/"
52-
collectorCmd = cmdDir + "jaeger-collector %s &"
53-
agentCmd = cmdDir + "jaeger-agent %s &"
52+
collectorCmd = cmdDir + "jaeger-collector"
53+
agentCmd = cmdDir + "jaeger-agent"
5454
queryCmd = cmdDir + "jaeger-query"
5555

5656
collectorHostPort = "localhost:14267"
@@ -97,11 +97,11 @@ func main() {
9797
func (h *clientHandler) initialize() {
9898
InitializeStorage(logger)
9999
logger.Info("Cassandra started")
100-
InitializeCollector(logger)
100+
startCollector(logger)
101101
logger.Info("Collector started")
102-
agentService := InitializeAgent("", logger)
102+
agentService := startAgent("", logger)
103103
logger.Info("Agent started")
104-
queryService := NewQueryService("", logger)
104+
queryService := startQueryService("", logger)
105105
logger.Info("Query started")
106106
traceHandler := services.NewTraceHandler(queryService, agentService, logger)
107107
h.Lock()
@@ -120,18 +120,19 @@ func (h *clientHandler) isInitialized() bool {
120120
return h.initialized
121121
}
122122

123-
// InitializeCollector initializes the jaeger collector
124-
func InitializeCollector(logger *zap.Logger) {
125-
cmd := exec.Command("/bin/sh", "-c",
126-
fmt.Sprintf(collectorCmd, "-cassandra.keyspace=jaeger -cassandra.servers=cassandra"))
127-
if err := cmd.Run(); err != nil {
128-
logger.Fatal("Failed to initialize collector service", zap.Error(err))
129-
}
123+
// startCollector starts the jaeger collector as a background process.
124+
func startCollector(logger *zap.Logger) {
125+
forkCmd(
126+
logger,
127+
collectorCmd,
128+
"-cassandra.keyspace=jaeger",
129+
"-cassandra.servers=cassandra",
130+
)
130131
tChannelHealthCheck(logger, collectorService, collectorHostPort)
131132
}
132133

133-
// NewQueryService initiates the query service
134-
func NewQueryService(url string, logger *zap.Logger) services.QueryService {
134+
// startQueryService initiates the query service as a background process.
135+
func startQueryService(url string, logger *zap.Logger) services.QueryService {
135136
forkCmd(
136137
logger,
137138
queryCmd,
@@ -145,6 +146,23 @@ func NewQueryService(url string, logger *zap.Logger) services.QueryService {
145146
return services.NewQueryService(url, logger)
146147
}
147148

149+
// startAgent initializes the jaeger agent as a background process.
150+
func startAgent(url string, logger *zap.Logger) services.AgentService {
151+
forkCmd(
152+
logger,
153+
agentCmd,
154+
"-collector.host-port=localhost:14267",
155+
"-processor.zipkin-compact.server-host-port=test_driver:5775",
156+
"-processor.jaeger-compact.server-host-port=test_driver:6831",
157+
"-processor.jaeger-binary.server-host-port=test_driver:6832",
158+
)
159+
if url == "" {
160+
url = agentURL
161+
}
162+
healthCheck(logger, agentService, agentURL)
163+
return services.NewAgentService(url, logger)
164+
}
165+
148166
func forkCmd(logger *zap.Logger, cmd string, args ...string) {
149167
c := exec.Command(cmd, args...)
150168

@@ -170,21 +188,6 @@ func forkCmd(logger *zap.Logger, cmd string, args ...string) {
170188
}
171189
}
172190

173-
// InitializeAgent initializes the jaeger agent.
174-
func InitializeAgent(url string, logger *zap.Logger) services.AgentService {
175-
cmd := exec.Command("/bin/sh", "-c", fmt.Sprintf(agentCmd,
176-
"-collector.host-port=localhost:14267 -processor.zipkin-compact.server-host-port=test_driver:5775 "+
177-
"-processor.jaeger-compact.server-host-port=test_driver:6831 -processor.jaeger-binary.server-host-port=test_driver:6832"))
178-
if err := cmd.Run(); err != nil {
179-
logger.Fatal("Failed to initialize agent service", zap.Error(err))
180-
}
181-
if url == "" {
182-
url = agentURL
183-
}
184-
healthCheck(logger, agentService, agentURL)
185-
return services.NewAgentService(url, logger)
186-
}
187-
188191
// InitializeStorage initializes cassandra instances.
189192
func InitializeStorage(logger *zap.Logger) {
190193
session := initializeCassandra(logger, cassandraHost, 4)

0 commit comments

Comments
 (0)