Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7183f6b43d | |||
| d89bfeb441 | |||
| 9a0c6bed40 | |||
| d6ca535939 |
@@ -3,3 +3,4 @@
|
|||||||
build/
|
build/
|
||||||
dist/
|
dist/
|
||||||
.vscode
|
.vscode
|
||||||
|
.DS_Store
|
||||||
|
|||||||
@@ -9,9 +9,6 @@ ifneq ($(shell git status --porcelain),)
|
|||||||
GIT_HASH := $(GIT_HASH)+
|
GIT_HASH := $(GIT_HASH)+
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Get the build number from the commit count on the main branch
|
|
||||||
COMMIT_COUNT := $(shell git rev-list --count HEAD)
|
|
||||||
|
|
||||||
# Capture the current build date in RFC3339 format
|
# Capture the current build date in RFC3339 format
|
||||||
BUILD_DATE := $(shell date -u +"%Y-%m-%dT%H:%M:%SZ")
|
BUILD_DATE := $(shell date -u +"%Y-%m-%dT%H:%M:%SZ")
|
||||||
|
|
||||||
@@ -31,12 +28,12 @@ test-all:
|
|||||||
# Build OSX binary
|
# Build OSX binary
|
||||||
mac:
|
mac:
|
||||||
@echo "Building Mac binary..."
|
@echo "Building Mac binary..."
|
||||||
GOOS=darwin GOARCH=arm64 go build -ldflags="-X main.commit=${GIT_HASH} -X main.version=${COMMIT_COUNT} -X main.date=${BUILD_DATE}" -o $(BUILD_DIR)/$(APP_NAME)-darwin-arm64
|
GOOS=darwin GOARCH=arm64 go build -ldflags="-X main.commit=${GIT_HASH} -X main.version=local_${GIT_HASH} -X main.date=${BUILD_DATE}" -o $(BUILD_DIR)/$(APP_NAME)-darwin-arm64
|
||||||
|
|
||||||
# Build Linux binary
|
# Build Linux binary
|
||||||
linux:
|
linux:
|
||||||
@echo "Building Linux binary..."
|
@echo "Building Linux binary..."
|
||||||
GOOS=linux GOARCH=amd64 go build -ldflags="-X main.commit=${GIT_HASH} -X main.version=${COMMIT_COUNT} -X main.date=${BUILD_DATE}" -o $(BUILD_DIR)/$(APP_NAME)-linux-amd64
|
GOOS=linux GOARCH=amd64 go build -ldflags="-X main.commit=${GIT_HASH} -X main.version=local_${GIT_HASH} -X main.date=${BUILD_DATE}" -o $(BUILD_DIR)/$(APP_NAME)-linux-amd64
|
||||||
|
|
||||||
# for testing proxy.Process
|
# for testing proxy.Process
|
||||||
simple-responder:
|
simple-responder:
|
||||||
@@ -55,9 +52,12 @@ release:
|
|||||||
echo "Error: There are unstaged changes. Please commit or stash your changes before creating a release tag." >&2; \
|
echo "Error: There are unstaged changes. Please commit or stash your changes before creating a release tag." >&2; \
|
||||||
exit 1; \
|
exit 1; \
|
||||||
fi
|
fi
|
||||||
@echo "Creating release tag v$(COMMIT_COUNT)..."
|
|
||||||
git tag v$(COMMIT_COUNT)
|
# Get the highest tag in v{number} format, increment it, and create a new tag
|
||||||
git push origin v$(COMMIT_COUNT)
|
@highest_tag=$$(git tag --sort=-v:refname | grep -E '^v[0-9]+$$' | head -n 1 || echo "v0"); \
|
||||||
|
new_tag="v$$(( $${highest_tag#v} + 1 ))"; \
|
||||||
|
echo "tagging new version: $$new_tag"; \
|
||||||
|
git tag "$$new_tag";
|
||||||
|
|
||||||
# Phony targets
|
# Phony targets
|
||||||
.PHONY: all clean osx linux
|
.PHONY: all clean osx linux
|
||||||
|
|||||||
+1
-1
@@ -22,7 +22,7 @@ func main() {
|
|||||||
flag.Parse() // Parse the command-line flags
|
flag.Parse() // Parse the command-line flags
|
||||||
|
|
||||||
if *showVersion {
|
if *showVersion {
|
||||||
fmt.Printf("version: v%s (%s), built at %s\n", version, commit, date)
|
fmt.Printf("version: %s (%s), built at %s\n", version, commit, date)
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -46,7 +46,7 @@ func (w *LogMonitor) Write(p []byte) (n int, err error) {
|
|||||||
w.buffer = w.buffer.Next()
|
w.buffer = w.buffer.Next()
|
||||||
w.bufferMu.Unlock()
|
w.bufferMu.Unlock()
|
||||||
|
|
||||||
w.broadcast(p)
|
w.broadcast(bufferCopy)
|
||||||
return n, nil
|
return n, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+12
-8
@@ -125,11 +125,15 @@ func (p *Process) start() error {
|
|||||||
maxDuration := time.Duration(p.config.UnloadAfter) * time.Second
|
maxDuration := time.Duration(p.config.UnloadAfter) * time.Second
|
||||||
|
|
||||||
for range time.Tick(time.Second) {
|
for range time.Tick(time.Second) {
|
||||||
|
if p.state != StateReady {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// wait for all inflight requests to complete and ticker
|
// wait for all inflight requests to complete and ticker
|
||||||
p.inFlightRequests.Wait()
|
p.inFlightRequests.Wait()
|
||||||
|
|
||||||
if time.Since(p.lastRequestHandled) > maxDuration {
|
if time.Since(p.lastRequestHandled) > maxDuration {
|
||||||
fmt.Fprintf(p.logMonitor, "!!! Unloading model %s, TTL of %d reached.\n", p.ID, p.config.UnloadAfter)
|
fmt.Fprintf(p.logMonitor, "!!! Unloading model %s, TTL of %ds reached.\n", p.ID, p.config.UnloadAfter)
|
||||||
p.Stop()
|
p.Stop()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -162,25 +166,25 @@ func (p *Process) Stop() {
|
|||||||
// will be a source of pain in the future.
|
// will be a source of pain in the future.
|
||||||
|
|
||||||
p.cmd.Process.Signal(syscall.SIGTERM)
|
p.cmd.Process.Signal(syscall.SIGTERM)
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
sigtermTimeout, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
done := make(chan error, 1)
|
sigtermNormal := make(chan error, 1)
|
||||||
go func() {
|
go func() {
|
||||||
done <- p.cmd.Wait()
|
sigtermNormal <- p.cmd.Wait()
|
||||||
}()
|
}()
|
||||||
|
|
||||||
select {
|
select {
|
||||||
case <-ctx.Done():
|
case <-sigtermTimeout.Done():
|
||||||
fmt.Printf("!!! process for %s timed out waiting to stop\n", p.ID)
|
fmt.Fprintf(p.logMonitor, "!!! process for %s timed out waiting to stop\n", p.ID)
|
||||||
p.cmd.Process.Kill()
|
p.cmd.Process.Kill()
|
||||||
p.cmd.Wait()
|
p.cmd.Wait()
|
||||||
case err := <-done:
|
case err := <-sigtermNormal:
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err.Error() != "wait: no child processes" {
|
if err.Error() != "wait: no child processes" {
|
||||||
// possible that simple-responder for testing is just not
|
// possible that simple-responder for testing is just not
|
||||||
// existing right, so suppress those errors.
|
// existing right, so suppress those errors.
|
||||||
fmt.Printf("!!! process for %s stopped with error > %v\n", p.ID, err)
|
fmt.Fprintf(p.logMonitor, "!!! process for %s stopped with error > %v\n", p.ID, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user