sources

package
v1.11.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 10, 2026 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Overview

Copyright 2025 Google LLC

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Index

Constants

View Source
const CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"

CloudPlatformScope is the OAuth2 scope for Google Cloud Platform services.

View Source
const ConnectTimeout = 60 * time.Second

ConnectTimeout is the default ceiling on a connection attempt. It is sized for a cold cloud connector path rather than for a healthy connection.

Variables

This section is empty.

Functions

func GetCloudSQLOpts

func GetCloudSQLOpts(ipType, userAgent string, useIAM bool) ([]cloudsqlconn.Option, error)

GetCloudSQLDialOpts retrieve dial options with the right ip type and user agent for cloud sql databases.

func GetIAMAccessToken

func GetIAMAccessToken(ctx context.Context) (string, error)

func GetIAMPrincipalEmailFromADC

func GetIAMPrincipalEmailFromADC(ctx context.Context, dbType string) (string, error)

GetIAMPrincipalEmailFromADC finds the email associated with ADC

func InitConnectionSpan

func InitConnectionSpan(ctx context.Context, tracer trace.Tracer, sourceType, sourceName string) (context.Context, trace.Span)

InitConnectionSpan adds a span for database pool connection initialization

func NormalizeValue added in v1.10.0

func NormalizeValue(val any, oid uint32) any

NormalizeValue converts specific database types to friendly representations (e.g. UUID to string).

func Register

func Register(sourceType string, factory SourceConfigFactory) bool

Register registers a new source type with its factory. It returns false if the type is already registered.

Types

type Cache

type Cache struct {
	// contains filtered or unexported fields
}

Cache is a thread-safe, expiring key-value store

func NewCache

func NewCache(onEvict OnEvictFunc) *Cache

NewCache creates a new cache and cleans up every 55 min

func (*Cache) Delete

func (c *Cache) Delete(key string)

Delete manually evicts an item

func (*Cache) DeleteExpired

func (c *Cache) DeleteExpired()

DeleteExpired removes all expired items

func (*Cache) Get

func (c *Cache) Get(key string) (any, bool)

Get retrieves an item from the cache

func (*Cache) Set

func (c *Cache) Set(key string, value any)

Set adds an item to the cache

type ConnectOnce added in v1.11.0

type ConnectOnce[T any] struct {
	// contains filtered or unexported fields
}

ConnectOnce holds a connection a source builds on first use. A source keeps one of these instead of a bare handle and resolves it through Do.

func NewConnectOnce added in v1.11.0

func NewConnectOnce[T any](ctx context.Context, name, sourceType string, tracer trace.Tracer, opts ...Option) *ConnectOnce[T]

NewConnectOnce returns a holder for a connection that has not been made yet. ctx must be the context Initialize was called with: every later connect runs under it, so the source reports the startup user agent and cannot pick up request-scoped values from whichever caller happens to trigger it.

func (*ConnectOnce[T]) Close added in v1.11.0

func (c *ConnectOnce[T]) Close(ctx context.Context) error

Close releases the connection, if one was ever made, and stops another from being made. It is safe on a source that never connected and safe to call twice.

Close does not wait for an attempt that is already in flight. That attempt releases its own result rather than caching it into a closed holder, so shutdown never blocks on a connect that may be hung for the full timeout.

func (*ConnectOnce[T]) Do added in v1.11.0

func (c *ConnectOnce[T]) Do(ctx context.Context, connect func(context.Context) (T, error)) (T, error)

Do returns the connection, making it on the first call. Concurrent callers share one attempt, and a failed attempt is not remembered.

Because a failure is retried by the next caller rather than cached, connect must release whatever it had already built before it returns an error. A pool that fails its ping and is returned unclosed leaks once per tool call, not once per process.

func (*ConnectOnce[T]) Get added in v1.11.0

func (c *ConnectOnce[T]) Get() (T, bool)

Get returns the connection if one has already been made. It never blocks and never fails, so a source's context-free accessors — the ones tools type assert on — can report a handle without being able to build one.

func (*ConnectOnce[T]) OnClose added in v1.11.0

func (c *ConnectOnce[T]) OnClose(fn func(context.Context, T) error) *ConnectOnce[T]

OnClose registers how to release the connection. A source that holds a handle with no teardown can leave it unset. It is meant to be chained onto NewConnectOnce, before the holder is reachable by another goroutine.

type Dialect

type Dialect string

Dialect represents the dialect type of a database.

func (*Dialect) String

func (i *Dialect) String() string

func (*Dialect) UnmarshalYAML

func (i *Dialect) UnmarshalYAML(ctx context.Context, unmarshal func(interface{}) error) error

type IPType

type IPType string

func (*IPType) String

func (i *IPType) String() string

func (*IPType) UnmarshalYAML

func (i *IPType) UnmarshalYAML(ctx context.Context, unmarshal func(interface{}) error) error

type Item

type Item struct {
	Value     any
	ExpiresAt int64 // Unix nano timestamp
}

Item holds the cached value and its expiration timestamp

func (Item) IsExpired

func (item Item) IsExpired() bool

IsExpired checks if the item is expired

type OnEvictFunc

type OnEvictFunc func(key string, value any)

OnEvictFunc is the signature for the callback

type Option added in v1.11.0

type Option func(*options)

Option configures a ConnectOnce.

func WithMinConnectTimeout added in v1.11.0

func WithMinConnectTimeout(d time.Duration) Option

WithMinConnectTimeout raises the ceiling for a source whose own configuration allows a longer connect. A shorter value is ignored: the source's own bound still applies inside the ceiling, and lowering the ceiling would not make it any tighter.

type Source

type Source interface {
	SourceType() string
	ToConfig() SourceConfig
	IsReadOnly() bool
}

Source is the interface for the source itself.

type SourceConfig

type SourceConfig interface {
	SourceConfigType() string
	Initialize(ctx context.Context, tracer trace.Tracer) (Source, error)
}

SourceConfig is the interface for configuring a source.

func DecodeConfig

func DecodeConfig(ctx context.Context, sourceType string, name string, decoder *yaml.Decoder) (SourceConfig, error)

DecodeConfig decodes a source configuration using the registered factory for the given type.

type SourceConfigFactory

type SourceConfigFactory func(ctx context.Context, name string, decoder *yaml.Decoder) (SourceConfig, error)

SourceConfigFactory defines the function signature for creating a SourceConfig.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL