Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revert "Use Server.Hostname as the prefix for origin/cache namespace registration" #2010

Merged
merged 1 commit into from
Feb 11, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cache/advertise.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ type (
)

func (server *CacheServer) CreateAdvertisement(name, originUrl, originWebUrl string) (*server_structs.OriginAdvertiseV2, error) {
registryPrefix := server_structs.GetCacheNS(param.Server_Hostname.GetString())
registryPrefix := server_structs.GetCacheNS(param.Xrootd_Sitename.GetString())
ad := server_structs.OriginAdvertiseV2{
Name: name,
RegistryPrefix: registryPrefix,
Expand Down
13 changes: 8 additions & 5 deletions launcher_utils/advertise.go
Original file line number Diff line number Diff line change
Expand Up @@ -137,16 +137,19 @@ func advertiseInternal(ctx context.Context, server server_structs.XRootDServer)
var err error
// Fetch site name from the registry, if not, fall back to Xrootd.Sitename.
if server.GetServerType().IsEnabled(server_structs.OriginType) {
// We use Server_Hostname (without port) as the origin/cache prefix
hostname := param.Server_Hostname.GetString()
originPrefix := server_structs.GetOriginNs(hostname)
// Note we use Server_ExternalWebUrl as the origin prefix
// But caches still use Xrootd_Sitename, which will be changed to Server_ExternalWebUrl in
// https://github.com/PelicanPlatform/pelican/issues/1351
extUrlStr := param.Server_ExternalWebUrl.GetString()
extUrl, _ := url.Parse(extUrlStr)
// Only use hostname:port
originPrefix := server_structs.GetOriginNs(extUrl.Host)
name, err = getSitenameFromReg(ctx, originPrefix)
if err != nil {
log.Errorf("Failed to get sitename from the registry for the origin. Will fallback to use Xrootd.Sitename: %v", err)
}
} else if server.GetServerType().IsEnabled(server_structs.CacheType) {
hostname := param.Server_Hostname.GetString()
cachePrefix := server_structs.GetCacheNS(hostname)
cachePrefix := server_structs.GetCacheNS(param.Xrootd_Sitename.GetString())
name, err = getSitenameFromReg(ctx, cachePrefix)
if err != nil {
log.Errorf("Failed to get sitename from the registry for the cache. Will fallback to use Xrootd.Sitename: %v", err)
Expand Down
6 changes: 3 additions & 3 deletions launcher_utils/key_refresh_and_update_namespace_pubkey.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,9 @@ func updateNamespacesPubKey(ctx context.Context, prefixes []string) error {
}

func triggerNamespacesPubKeyUpdate(ctx context.Context) error {
hostname := param.Server_Hostname.GetString()
// Only use server's hostname as prefix/namespace (without port)
namespace := server_structs.GetOriginNs(hostname)
extUrlStr := param.Server_ExternalWebUrl.GetString()
extUrl, _ := url.Parse(extUrlStr)
namespace := server_structs.GetOriginNs(extUrl.Host)
if err := updateNamespacesPubKey(ctx, []string{namespace}); err != nil {
log.Errorf("Error updating the public key of the registered origin namespace %s: %v", namespace, err)
}
Expand Down
2 changes: 1 addition & 1 deletion launchers/cache_serve.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ func CacheServe(ctx context.Context, engine *gin.Engine, egrp *errgroup.Group, m
func CacheServeFinish(ctx context.Context, egrp *errgroup.Group, cacheServer server_structs.XRootDServer) error {
log.Debug("Register Cache")
metrics.SetComponentHealthStatus(metrics.OriginCache_Registry, metrics.StatusWarning, "Start to register namespaces for the cache server")
if err := launcher_utils.RegisterNamespaceWithRetry(ctx, egrp, server_structs.GetCacheNS(param.Server_Hostname.GetString())); err != nil {
if err := launcher_utils.RegisterNamespaceWithRetry(ctx, egrp, server_structs.GetCacheNS(param.Xrootd_Sitename.GetString())); err != nil {
return err
}
log.Debug("Cache is registered")
Expand Down
7 changes: 4 additions & 3 deletions launchers/origin_serve.go
Original file line number Diff line number Diff line change
Expand Up @@ -155,9 +155,10 @@ func OriginServeFinish(ctx context.Context, egrp *errgroup.Group) error {

metrics.SetComponentHealthStatus(metrics.OriginCache_Registry, metrics.StatusWarning, "Start to register namespaces for the origin server")
log.Debug("Register Origin")
hostname := param.Server_Hostname.GetString()
// Only use server's hostname as prefix (without port)
if err := launcher_utils.RegisterNamespaceWithRetry(ctx, egrp, server_structs.GetOriginNs(hostname)); err != nil {
extUrlStr := param.Server_ExternalWebUrl.GetString()
extUrl, _ := url.Parse(extUrlStr)
// Only use hostname:port
if err := launcher_utils.RegisterNamespaceWithRetry(ctx, egrp, server_structs.GetOriginNs(extUrl.Host)); err != nil {
return err
}
log.Debug("Origin is registered")
Expand Down
7 changes: 4 additions & 3 deletions origin/advertise.go
Original file line number Diff line number Diff line change
Expand Up @@ -123,9 +123,10 @@ func (server *OriginServer) CreateAdvertisement(name, originUrlStr, originWebUrl

// PublicReads implies reads
reads := param.Origin_EnableReads.GetBool() || param.Origin_EnablePublicReads.GetBool()
hostname := param.Server_Hostname.GetString()
// Only use server's hostname as prefix (without port)
registryPrefix := server_structs.GetOriginNs(hostname)
extUrlStr := param.Server_ExternalWebUrl.GetString()
extUrl, _ := url.Parse(extUrlStr)
// Only use hostname:port
registryPrefix := server_structs.GetOriginNs(extUrl.Host)
ad := server_structs.OriginAdvertiseV2{
Name: name,
RegistryPrefix: registryPrefix,
Expand Down
7 changes: 4 additions & 3 deletions origin/origin_ui.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,10 @@ func handleExports(ctx *gin.Context) {

res := exportsRes{Type: string(storageType)}

hostname := param.Server_Hostname.GetString()
// Only use server's hostname as prefix (without port)
originPrefix := server_structs.GetOriginNs(hostname)
extUrlStr := param.Server_ExternalWebUrl.GetString()
extUrl, _ := url.Parse(extUrlStr)
// Only use hostname:port
originPrefix := server_structs.GetOriginNs(extUrl.Host)
if !registrationsStatus.Has(originPrefix) {
if err := FetchAndSetRegStatus(originPrefix); err != nil {
log.Errorf("Failed to fetch registration status from the registry: %v", err)
Expand Down
2 changes: 1 addition & 1 deletion server_structs/director.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ type (
// The value is from the Sitename of the server registration in the registry if set, or Xrootd.Sitename if not
Name string `json:"name"`
// The namespace prefix to register/look up the server in the registry.
// The value is /caches/{Server.Hostname} for cache servers and /origins/{Server.Hostname} for the origin servers
// The value is /caches/{Xrootd.Sitename} for cache servers and /origins/{Xrootd.Sitename} for the origin servers
RegistryPrefix string `json:"registry-prefix"`
BrokerURL string `json:"broker-url,omitempty"`
DataURL string `json:"data-url" binding:"required"`
Expand Down
Loading