func (c ReflectorConfig) Printable() string {
	if len(c.BootstrapURL) > 200 {
		c.BootstrapURL = c.BootstrapURL[:200] + "...<truncated>"
	}
	c.Upstream.DSN = "<REDACTED>"
	return fmt.Sprintf("%+v", c)
}
Printable returns a "pretty" stringified version of the config
package reflector
import (
	"context"
	"database/sql"
	"encoding/base64"
	"fmt"
	"io"
	"net/url"
	"os"
	"strings"
	"sync/atomic"
	"time"
	_ "github.com/go-sql-driver/mysql"
	"github.com/segmentio/ctlstore"
	"github.com/segmentio/ctlstore/pkg/changelog"
	"github.com/segmentio/ctlstore/pkg/ctldb"
	"github.com/segmentio/ctlstore/pkg/errs"
	"github.com/segmentio/ctlstore/pkg/ldb"
	"github.com/segmentio/ctlstore/pkg/ldbwriter"
	"github.com/segmentio/ctlstore/pkg/ledger"
	"github.com/segmentio/ctlstore/pkg/logwriter"
	"github.com/segmentio/ctlstore/pkg/sqlite"
	"github.com/segmentio/errors-go"
	"github.com/segmentio/events/v2"
	_ "github.com/segmentio/events/v2/log"  
	"github.com/segmentio/stats/v4"
)
type Reflector struct {
	shovel        func() (*shovel, error)
	ldb           *sql.DB
	upstreamdb    *sql.DB
	ledgerMonitor *ledger.Monitor
	stop          chan struct{}
}
type UpstreamConfig struct {
	Driver                string
	DSN                   string
	LedgerTable           string
	QueryBlockSize        int
	PollInterval          time.Duration
	PollTimeout           time.Duration
	PollJitterCoefficient float64
}
type ReflectorConfig struct {
	LDBPath          string
	ChangelogPath    string
	ChangelogSize    int
	Upstream         UpstreamConfig
	BootstrapURL     string
	LedgerHealth     ledger.HealthConfig
	IsSupervisor     bool
	LDBWriteCallback ldbwriter.LDBWriteCallback  
	BootstrapRegion  string                      
}