mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-10-09 20:37:52 +00:00
Store version-check file in the configured data-directory
This also fixes what I think is a bug. It also un-exports everything. I have questions.
This commit is contained in:
parent
5c74b64722
commit
6d69510d95
2 changed files with 33 additions and 32 deletions
|
|
@ -604,11 +604,12 @@ func (s *Server) Open() error {
|
|||
log.Println(errors.Wrap(err, "logging startup"))
|
||||
}
|
||||
|
||||
// Do version check in. This is in a goroutine so that we don't block server startup if the server endpoint is down/having issues.
|
||||
// Do version check in. This is in a goroutine so that we don't block server
|
||||
// startup if the server endpoint is down/having issues.
|
||||
go func() {
|
||||
s.logger.Printf("Beginning featurebase version check-in")
|
||||
vc := VersionChecker{URL: "https://analytics.featurebase.com/v2/featurebase/metrics"}
|
||||
resp, err := vc.CheckIn()
|
||||
vc := newVersionChecker(s.cluster.Path, "https://analytics.featurebase.com/v2/featurebase/metrics")
|
||||
resp, err := vc.checkIn()
|
||||
if err != nil {
|
||||
s.logger.Errorf("doing version checkin. Error was %s", err)
|
||||
return
|
||||
|
|
|
|||
58
verchk.go
58
verchk.go
|
|
@ -6,25 +6,31 @@ import (
|
|||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type VersionChecker struct {
|
||||
URL string
|
||||
const (
|
||||
versionCheckerFilename = ".client_id.txt"
|
||||
)
|
||||
|
||||
type versionChecker struct {
|
||||
path string
|
||||
url string
|
||||
}
|
||||
|
||||
func NewVersionChecker(endpoint string) *VersionChecker {
|
||||
v := VersionChecker{
|
||||
URL: endpoint,
|
||||
func newVersionChecker(path, endpoint string) *versionChecker {
|
||||
v := versionChecker{
|
||||
path: path,
|
||||
url: endpoint,
|
||||
}
|
||||
return &v
|
||||
}
|
||||
|
||||
func (v *VersionChecker) CheckIn() (*VerCheckResponse, error) {
|
||||
|
||||
id, err := v.WriteClientUUID()
|
||||
func (v *versionChecker) checkIn() (*verCheckResponse, error) {
|
||||
id, err := v.writeClientUUID()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -38,60 +44,54 @@ func (v *VersionChecker) CheckIn() (*VerCheckResponse, error) {
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
wReq := bytes.NewReader(req)
|
||||
|
||||
var jsonResp verCheckResponse
|
||||
r, err := http.Post(v.url, "application/json", wReq)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var json_resp VerCheckResponse
|
||||
r, err := http.Post(v.URL, "application/json", wReq)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
data, err := io.ReadAll(r.Body)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = json.Unmarshal(data, &json_resp)
|
||||
err = json.Unmarshal(data, &jsonResp)
|
||||
if err != nil {
|
||||
|
||||
return nil, err
|
||||
}
|
||||
return &json_resp, nil
|
||||
|
||||
return &jsonResp, nil
|
||||
}
|
||||
|
||||
func (v *VersionChecker) GenerateClientUUID() (string, error) {
|
||||
func (v *versionChecker) generateClientUUID() (string, error) {
|
||||
clientUUID := uuid.New()
|
||||
cleanedUUID := strings.Replace(clientUUID.String(), "-", "", -1)
|
||||
return cleanedUUID, nil
|
||||
}
|
||||
|
||||
func (v *VersionChecker) WriteClientUUID() (string, error) {
|
||||
filename := ".client_id.txt"
|
||||
_, err := os.Stat(filename)
|
||||
if err != nil {
|
||||
func (v *versionChecker) writeClientUUID() (string, error) {
|
||||
filename := filepath.Join(v.path, versionCheckerFilename)
|
||||
if _, err := os.Stat(filename); err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
fh, err := os.Create(filename)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
defer fh.Close()
|
||||
id, err := v.GenerateClientUUID()
|
||||
|
||||
id, err := v.generateClientUUID()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
_, err = fh.WriteString(id)
|
||||
if err != nil {
|
||||
if _, err := fh.WriteString(id); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return "", err
|
||||
return id, nil
|
||||
} else {
|
||||
return "", err
|
||||
}
|
||||
|
|
@ -102,15 +102,15 @@ func (v *VersionChecker) WriteClientUUID() (string, error) {
|
|||
return "", err
|
||||
}
|
||||
defer fh.Close()
|
||||
buf, err := os.ReadFile(filename)
|
||||
|
||||
buf, err := os.ReadFile(filename)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return string(buf), nil
|
||||
|
||||
return string(buf), nil
|
||||
}
|
||||
|
||||
type VerCheckResponse struct {
|
||||
type verCheckResponse struct {
|
||||
Version string `json:"latest_version"`
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue