comparison pkg/geoserver/boot.go @ 890:0a563fef64a9 geo-style

Reconfiguring GeoServer is now queued async. We should not reconfigure the remote until the initial config is done.
author Sascha L. Teichmann <teichmann@intevation.de>
date Tue, 02 Oct 2018 12:58:20 +0200
parents 495fc3264265
children 876d1f5433be
comparison
equal deleted inserted replaced
889:afd83fb3399d 890:0a563fef64a9
5 "encoding/json" 5 "encoding/json"
6 "encoding/xml" 6 "encoding/xml"
7 "fmt" 7 "fmt"
8 "io" 8 "io"
9 "log" 9 "log"
10 "net"
11 "net/http" 10 "net/http"
12 "net/url" 11 "net/url"
13 "strings" 12 "strings"
14 "time"
15 13
16 "gemma.intevation.de/gemma/pkg/config" 14 "gemma.intevation.de/gemma/pkg/config"
17 "gemma.intevation.de/gemma/pkg/models" 15 "gemma.intevation.de/gemma/pkg/models"
18 ) 16 )
19 17
489 return true 487 return true
490 } 488 }
491 } 489 }
492 } 490 }
493 491
494 func prepareGeoServer() error { 492 func PrepareGeoServer() error {
495 493
496 if config.DBUser() == "" { 494 if config.DBUser() == "" {
497 log.Println("info: Need metamorphic db user to configure GeoServer") 495 log.Println("info: Need metamorphic db user to configure GeoServer")
498 return nil 496 return nil
499 } 497 }
515 } 513 }
516 } 514 }
517 515
518 return nil 516 return nil
519 } 517 }
520
521 func ConfigureBoot() {
522 log.Println("Configure GeoServer...")
523 const maxTries = 10
524 const sleep = time.Second * 5
525
526 for try := 1; try <= maxTries; try++ {
527 err := prepareGeoServer()
528 if err == nil {
529 break
530 }
531 if try < maxTries {
532 if uerr, ok := err.(*url.Error); ok {
533 if oerr, ok := uerr.Err.(*net.OpError); ok && oerr.Op == "dial" {
534 log.Printf("Failed attempt %d of %d to configure GeoServer. "+
535 "Will try again in %s...\n", try, maxTries, sleep)
536 time.Sleep(sleep)
537 continue
538 }
539 }
540 }
541 log.Printf("warn: configure GeoServer failed: %v\n", err)
542 break
543 }
544 }