Skip to content
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
16 changes: 16 additions & 0 deletions certs/metric-store-ca.crl
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
-----BEGIN X509 CRL-----
MIICiTBzAgEBMA0GCSqGSIb3DQEBCwUAMBoxGDAWBgNVBAMTD21ldHJpYy1zdG9y
ZS1jYRcNMjYwMTE5MDgzNzA2WhcNMjcwNzE5MDgzNzA1WjAAoCMwITAfBgNVHSME
GDAWgBTZ8CCGrhqe0d5bTw8THRmYhwrHwDANBgkqhkiG9w0BAQsFAAOCAgEAB3gg
bceNY7nzH8c9Q0ht202t7wQO2//1imafhesBZpnpb+xb7QkmncKgReye29M3TTr+
hZUN7/c89zQVw1jN/9PcnQSV5pGyzVBhkKVYg/27dFw5C5SOaiYh/DMsNkWZxdBE
MrFlkYZRpxWKy22ydBoU5IcRGIlWqyz0Iz+JBqSuUeytC7FkH9mpFRfdZIgMKGVB
Sg8uPrrG9xfqyipX8cuOg+oks3QSd96u4srPlKIR8A1qr7QjKsckiLbxIYc8nlf2
04Jdevemf+uqmaNdEjQLKst2DdDkUCRH9PWCzjJYTxpKN/WZf/L5X9+AhEisE2Yi
kyprPfk/xsS+T+a5G9yeIIe6yj++0BvRIJgKHs08JR1UCOrf1WxkkNcx8hwP3mvs
ZrZnGNviZtwMhyRV7ngzDPdPfH1qvb/sE4oErsS6aw6YV5mWvHQKMb1A8B+HWuEn
JQMyGm8yXP2am+xfetCrZx/26iOShNatNZ3aDcCmuWYkv19A+/XN2kUkFu2a1u0z
DUMMxn5z0Oy1cEM6tuOBWdIqVfMUui7wEIY1GUPPuNvknWQkkgjEddUMLcses5p8
cKEBWENpQUnxcCAp9bZfmRUkLcE6xm9FCsC+18b0d+3HjWbrfWiyX5iAtJNve2K5
yuiG/bEQn07ejc4RBK0OQbKJ1iOHSKZWN4OwM3M=
-----END X509 CRL-----
29 changes: 29 additions & 0 deletions certs/metric-store-ca.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
-----BEGIN CERTIFICATE-----
MIIE9DCCAtygAwIBAgIBATANBgkqhkiG9w0BAQsFADAaMRgwFgYDVQQDEw9tZXRy
aWMtc3RvcmUtY2EwHhcNMjYwMTE5MDgyNzA2WhcNMjcwNzE5MDgzNzA1WjAaMRgw
FgYDVQQDEw9tZXRyaWMtc3RvcmUtY2EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDiM33ybenW3SE9voNLrbzueZUJTm4vdD/7BGYpKkLHcDm22bXu5Sf1
+4ncLBLrj+t7fSiv2S08U0mxPyt0IW3SiJ1k64dqojy0NqrwkEQDA66wY7t9g4BA
e+3h47j2QSKUSjNvodqsKcUXxrjroZ4TkwNEKiuYAA++UH+zb3PnACwkTc6xdzT2
jxcD8SX7eQH3flAwurHX3l81o6i5NklVG9IhnSK0qxzeLZKKx9p3A7p78XJ2yIXU
xHtkcbyKmbTmoFVpvA2znK/dmfHW/ksWxupZolHm5DEtU+4oDH4lQ4G6nGpU3yRk
L7qDI/FoD8WlvNhKcj5aqxJ3k2Nf+uSjODvTeR1MnjLkrH4uKFTvs1ltkb+BpzXw
QEDqZ0Ntinkkf5Ob8PjReaLarfx9km3XKojRwnsYO3ug8MXzxFtdarbalhE3UCiF
JeBQ0mTdBVzSLXT1IqmyLNCcD3Rb2sL29caoDggJm0l6tF7r3I4soW06qGlxJ3R1
L/8LKRTvZalGcJomYP3y00PnzyKwHzEv4xfjaCgCYs8y0Iegzs+3F9gTm0V627n1
VPHi+AzFFAlYUh1Mlr6MH/x8eOxdqXurh+PL7Onokav0QjWxnJoAjHtipcaaWcB5
GhRrcvvw2e221hsYWSYqx+QY3bmhMyH43H6/mTBR7LKQR1T6lvUcNwIDAQABo0Uw
QzAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU
2fAghq4antHeW08PEx0ZmIcKx8AwDQYJKoZIhvcNAQELBQADggIBAIIjIBrTFkT7
bBa7Aw9gIco9cak5qESDspBNAN77vcN2CL+dX4lE9D+cu4PqAMmzUCqQVn5gxm2o
cVYmNkL1dyQViLy8H36nW8lP7ieIqplsOy8GLMf1iVAjGB59JlPnF4GaCIIPIFQk
tqxeM3I0bz2MB89/qCP3Tj4mI0rMoqOieLIhTaTS4NWkdi9cK7PvEOLAaOH3zgIk
x5z8mDIoXJE/LDihcIcsL93k5URGKFE+0NmBl8Ac+EPiMyWWYCLEYmLdZOiji+oz
gaM+I52ZoI8Vj/oUVHPeIysWlzNdxpywLAooMPs1quCHgocvOI+/uE6VE6lKYt0t
AJSB92pq3bo1/shcNtQvuTL7PNjRclrtPO2wcJIfBPktJNaSnTMVtZL2kEEdyWv1
Ys2+c+arMtuLwBmQPyoQcXIba0+lyIz3MFPS0amDTqJ3E0Tbglb9SbqoRaQxaukD
TpTFvcykhl+ZrfgycicXBFHBDtHXXITndVo32GIh0v1ai2IoRXxzoKFsYvy3OyXf
EnZRkblrkqxN/SvDSxKADrz76U24MnXOQ90lhMRwlDtuf3WmIzcD6iBrofFqlFB1
liawdjvORrrGpV6M2PbQ/J4VBLIayCAOT9lRs7MH5qQag6p21xxNhiTuSAtv9BZ9
AgAYmVlQREELApJbD7mg4v467Go1PWsx
-----END CERTIFICATE-----
51 changes: 51 additions & 0 deletions certs/metric-store-ca.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----
25 changes: 25 additions & 0 deletions certs/metric-store.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
-----BEGIN CERTIFICATE-----
MIIESDCCAjCgAwIBAgIRANVva76jCes80NYScbrLuZ0wDQYJKoZIhvcNAQELBQAw
GjEYMBYGA1UEAxMPbWV0cmljLXN0b3JlLWNhMB4XDTI2MDExOTA4MjcwNloXDTI3
MDcxOTA4MzcwNVowFzEVMBMGA1UEAxMMbWV0cmljLXN0b3JlMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ycJO0aAVLFycWaoPN8jZwroXWD/TmaxeEGB
/IRHGWECZIpoTsfxVMSPboB4rUMBCiPkGVfvcp+46mp1apcoysgm5VLeN7CbRCJa
E7qItZ6m87Xhj9720ffGnhUxrQmHh0boKMB6eE8I4QguqT12MQXLIz2JwySbxegI
hc7jkl2aiZvJdrL5Lhs4zrZy0jBzjXlCOy+IzzigQJoxYcQUAUQcwkvGhUfEErZ/
Kwx7XTVtwUqSBF1/eN3HO+8cQeHqBOtW7R3X0Crxus/16LZ8D82eG+jkZH+Ca+Z3
Pm/abExbWWfjjeRd36dl7mQZvTSayJ+r+3EOBdfuP3SMN3nSnQIDAQABo4GLMIGI
MA4GA1UdDwEB/wQEAwIDuDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
HQYDVR0OBBYEFN010TDd0WwYYTuVPJguM/DFdaPzMB8GA1UdIwQYMBaAFNnwIIau
Gp7R3ltPDxMdGZiHCsfAMBcGA1UdEQQQMA6CDG1ldHJpYy1zdG9yZTANBgkqhkiG
9w0BAQsFAAOCAgEAPPw8hOJQEMCeNjRbROD4JjNxvx80wcnn35bAegD+Gf/nnu2D
1O+C4+jh96lYiLkFDJs+XgnPEVWZ2na4oLOI4b98fBeIky6IqiGhp3CJtegVWTR5
G3w6XyiiRQ+MX3ROu3XV4zMpGcM+cxW17xvNUOKZxKqd/wDHNNJsC5aU9cQsyvcJ
MAXJ8SpKEn5OgVTxoRbMlwhFg2kcLj2tpKCoxkI71RkkTgoaYw+ReuKeHKRXH0Ns
y+T2mocc3lkmXcMX/t0MhYb7vct9WvhFvgzSrxybWNDDMWk5ZPv8v3VwK6sVpdBd
lresKUOS2GZ5Rg+QldEacOX9PS8m066Zvu0anT98um5mEKTYu1i1ClvYVJ1NgAyV
odKxTBssfWz+5CjifBdcv0Nyu/p5BYEX/73sIDmCxspfnhSPo+owE11DttjA5qtx
uoisigM4tGHnIhoeE9JLBDFgXbjfdLaXvkF+Ags7wlWfip58YT9HvE4rwu2Nbr4h
FdA+ESO3dVSpRB5geGM+u6qpA8rYOTxgw6TfSwK0sSMBGX2PdqK26HTXS1GksqB6
PN6ISodb8RGOOu7PYOLIa40LNdnXKZhyVB0CaAEq4/AvvR5PjRtEd3x1Qx8NoPSc
JhtgaMVyBU0vadGjFJrBaMq0V2L2I7TTGXDm4j6s4QNF++S5u3ZCIPUwbFY=
-----END CERTIFICATE-----
16 changes: 16 additions & 0 deletions certs/metric-store.csr
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
-----BEGIN CERTIFICATE REQUEST-----
MIIChjCCAW4CAQAwFzEVMBMGA1UEAxMMbWV0cmljLXN0b3JlMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ycJO0aAVLFycWaoPN8jZwroXWD/TmaxeEGB
/IRHGWECZIpoTsfxVMSPboB4rUMBCiPkGVfvcp+46mp1apcoysgm5VLeN7CbRCJa
E7qItZ6m87Xhj9720ffGnhUxrQmHh0boKMB6eE8I4QguqT12MQXLIz2JwySbxegI
hc7jkl2aiZvJdrL5Lhs4zrZy0jBzjXlCOy+IzzigQJoxYcQUAUQcwkvGhUfEErZ/
Kwx7XTVtwUqSBF1/eN3HO+8cQeHqBOtW7R3X0Crxus/16LZ8D82eG+jkZH+Ca+Z3
Pm/abExbWWfjjeRd36dl7mQZvTSayJ+r+3EOBdfuP3SMN3nSnQIDAQABoCowKAYJ
KoZIhvcNAQkOMRswGTAXBgNVHREEEDAOggxtZXRyaWMtc3RvcmUwDQYJKoZIhvcN
AQELBQADggEBAGtR7hHs26u4XtMRZpNF1ET5b6dUYhugh8BON3W+MMl1nzEX21rL
PfdhNmQopjWZVcuWFYO83+nPCynZTq7uiNKex9MgJ/9I/j0CdwR9qBeCyAZSKnct
CMvkOM+38YnFWLqHa4sB9D8DvZI82nTPhQLH1ipL7xJjo2HN5DSQya6kCOf3aAam
jnw1CmEpms1OzgGDC/r1gL9di/SqobFU35skLK8UYxrA7cdyzIO/VXLnpnFbM29J
+gc2rJs7SoWwPbGaLNIaWF1KBPklyoRVu2E4quXfI+vwcu7C2pjK/t9C41YcMPmD
ELPU9QCZ6R/biaxpteFF1ZSpbERx9/nbJco=
-----END CERTIFICATE REQUEST-----
27 changes: 27 additions & 0 deletions certs/metric-store.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEA0ycJO0aAVLFycWaoPN8jZwroXWD/TmaxeEGB/IRHGWECZIpo
TsfxVMSPboB4rUMBCiPkGVfvcp+46mp1apcoysgm5VLeN7CbRCJaE7qItZ6m87Xh
j9720ffGnhUxrQmHh0boKMB6eE8I4QguqT12MQXLIz2JwySbxegIhc7jkl2aiZvJ
drL5Lhs4zrZy0jBzjXlCOy+IzzigQJoxYcQUAUQcwkvGhUfEErZ/Kwx7XTVtwUqS
BF1/eN3HO+8cQeHqBOtW7R3X0Crxus/16LZ8D82eG+jkZH+Ca+Z3Pm/abExbWWfj
jeRd36dl7mQZvTSayJ+r+3EOBdfuP3SMN3nSnQIDAQABAoIBAFAUcuzXHR6BucyG
SXHkkpGm0l9vxQPf8JiSB5FUPX7DitvEnjCapc0nStp2wM29JqzI1d5Cul43czL8
MxG8yEy3wgChAAQQ56HcgVsQGH8A74JoTWZ6AhO5q8sScKeWgJ7uZmfmL8xm9RAb
QU8QLz4CW3s/AHtQ6/8PtAPDZg2A3+AhfTPZHZ6BIAr1ShpA0Licx9R1yR0BlEJn
scGxKWtxuSasoD2bHtGA6H4IKetS5vgofUo+nHbjoHrTiFc2rsa2kXWkhpG0J8fJ
BUY9JAPjCHkMGNAxo11c0X24BxDF+U96hU5lJI3zS9rS3Qq2dYtF4wzVo+uceZdH
rHW2M8UCgYEA3NbtbWAiLWaQGo5NS/fR6lg5/TwNiVGv3XLLkoUJeQMz6MMGD8sA
WhH2YNjrjX9iJtf0z7R+P9MQ2cvper09DlqbInGyyBTyJWbDbYxMVEKYbmSbtYbx
BJV8k55kHbN+lKbgIpjreh88a7phjecNJXM3ziypWOtE/QOrDjD+4icCgYEA9MVH
VprvQAa24Ema4NcQXHjJpFa8bSdhTMeGVdfo1FsRhpDptQP4SYA2aTX5AgSgUjhP
BLT0aEPBn/f1M30YEjAiXpCNrTuJ8d8Y9BqYVj4qHEeTCY6K7A4XleCRgIrlwMp9
PWt59MlUJRRpys2e7B+N48Yu2f6wQ3q/JMtyE5sCgYEA2rvGzt64+17qvGLWDLiZ
IhPg3AHvJmPSXPSmzakXiNSzRYhlKJ9Y6d2AuswgAzZ4cSDVSiTsJytXNWHTD87/
+oejwKn8+lBExubSCl87+vk7IZxk3ZeagX/OtCfd4c03QuVGev4bvgnSPqGMnpCL
ZNyKGZwC4B+nZTOM6bF9w2ECgYEAtEy5Xtcj00Le5NnzJxnkaGllBxQJGlJ+vsLe
dk9jp0Ep6LjIHlm9Q88YxWlHcjAcNFRcCHiO7Fq0vvQ0f2fvGj6won3Sjr+jvjH7
PJx2iFikRk6Gxexk8rryrqlMJKar1NaTaHHJ1QGUZPfjccsC/KXFq/mpO1T7W8mI
ET93WW8CgYEAl4uakJ4WxQMKC5oVWj4lr/IUFVNqSOYGJ5QOquK1ekhtJSj8feO+
jWp44jVQhf0W/Nu64Wt7XUpc7TH8TIvUqoLWunLiQfssGZL2t1GxkHhNSg4Mo7Ee
1JHPWVLvRDIYysrzamxkAWGv4J0271il9ijwxTxBElt+FKfkmN+crmo=
-----END RSA PRIVATE KEY-----
10 changes: 10 additions & 0 deletions jobs/metric-store/spec
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,16 @@ properties:
description: "The maximum allowed runtime for a single PromQL query. Smaller timeouts are recommended."
default: "60s"

internode_max_retries:
description: "Maximum number of connection attempts before giving up when connecting to peer nodes (uses exponential backoff)"
default: 5
internode_retry_delay:
description: "Initial delay for exponential backoff between connection retry attempts (doubles each attempt: 1s, 2s, 4s, 8s, 16s)"
default: "1s"
internode_connect_timeout:
description: "Total timeout for establishing a connection to peer nodes"
default: "30s"

tls.ca_cert:
description: "The Certificate Authority for metric-store query endpoint mutual TLS."
tls.cert:
Expand Down
5 changes: 5 additions & 0 deletions jobs/metric-store/templates/bpm.yml.erb
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,11 @@ processes:
NODE_ADDRS: "<%= store_addrs.join(",") %>"
INTERNODE_ADDRS: "<%= internode_addrs.join(",") %>"

# Internode Connection Configuration
INTERNODE_MAX_RETRIES: "<%= p('internode_max_retries') %>"
INTERNODE_RETRY_DELAY: "<%= p('internode_retry_delay') %>"
INTERNODE_CONNECT_TIMEOUT: "<%= p('internode_connect_timeout') %>"

# Config for Prometheus metric scrapers
SCRAPE_CONFIG_PATH: "<%= "#{job_dir}/config/scrape_config.yml" %>"
ADDITIONAL_SCRAPE_CONFIGS_DIR: "/var/vcap/store/metric-store/scrape_configs"
Expand Down
7 changes: 5 additions & 2 deletions scripts/dev_bake
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#!/bin/bash

TILE_NAME=metric-store
RELEASE_VERSION=${RELEASE_VERSION:-1.8.1-dev.$(date +%s)}
STEMCELL_VERSION=${STEMCELL_VERSION:-1.954}
RELEASE_VERSION=${RELEASE_VERSION:-1.8.2-dev.$(date +%s)}
STEMCELL_VERSION=${STEMCELL_VERSION:-1.990}

PROJECT_DIR="$(cd "$(dirname "$0")/.."; pwd)"

Expand Down Expand Up @@ -39,13 +39,16 @@ pushd ${PROJECT_DIR}/tmp

pushd releases
for URL in ${RELEASE_URLS[@]}; do
echo_green "Fetching release from ${URL}..."
curl \
--location \
--remote-name \
--remote-header-name \
--silent \
--retry 5 \
${URL} || true
mv bpm-release ${PROJECT_DIR}/tmp/releases/bpm-release.tgz
mv routing-release ${PROJECT_DIR}/tmp/releases/routing-release.tgz
done
popd
echo_green "Releases downloaded to $(pwd)/releases"
Expand Down
2 changes: 1 addition & 1 deletion sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
45006b5d18f664acbd72945ca0f20be16f20f0ae
63ffc029d9c2aa9fa46af62dfbdf956da1c2f910
36 changes: 22 additions & 14 deletions src/cmd/metric-store/app/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,11 @@ type Config struct {
// assumed that the current node is the only one.
InternodeAddrs []string `env:"INTERNODE_ADDRS, report"`

// Internode connection configuration
InternodeMaxRetries int `env:"INTERNODE_MAX_RETRIES, report"`
InternodeRetryDelay time.Duration `env:"INTERNODE_RETRY_DELAY, report"`
InternodeConnectTimeout time.Duration `env:"INTERNODE_CONNECT_TIMEOUT, report"`

TLS sharedtls.TLS
MetricStoreServerTLS MetricStoreServerTLS
MetricStoreInternodeTLS MetricStoreInternodeTLS
Expand Down Expand Up @@ -79,20 +84,23 @@ type MetricStoreMetricsTLS struct {
// LoadConfig creates Config object from environment variables
func LoadConfig() *Config {
cfg := &Config{
LogLevel: "info",
Addr: ":8080",
IngressAddr: ":8090",
InternodeAddr: ":8091",
MetricsAddr: ":6060",
ProfilingAddr: "localhost:6070",
StoragePath: "/tmp/metric-store",
RetentionPeriod: 7 * 24 * time.Hour,
DiskFreePercentTarget: 20,
ReplicationFactor: 1,
LabelTruncationLength: 256,
QueryTimeout: 10 * time.Second,
LogQueries: false,
MaxConcurrentQueries: 20,
LogLevel: "info",
Addr: ":8080",
IngressAddr: ":8090",
InternodeAddr: ":8091",
MetricsAddr: ":6060",
ProfilingAddr: "localhost:6070",
StoragePath: "/tmp/metric-store",
RetentionPeriod: 7 * 24 * time.Hour,
DiskFreePercentTarget: 20,
ReplicationFactor: 1,
LabelTruncationLength: 256,
QueryTimeout: 10 * time.Second,
LogQueries: false,
MaxConcurrentQueries: 20,
InternodeMaxRetries: 5,
InternodeRetryDelay: 1 * time.Second,
InternodeConnectTimeout: 30 * time.Second,
}

if err := envstruct.Load(cfg); err != nil {
Expand Down
19 changes: 18 additions & 1 deletion src/cmd/metric-store/app/metric_store.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/common/config"

"github.com/cloudfoundry/metric-store-release/src/internal/metric-store"
metric_store "github.com/cloudfoundry/metric-store-release/src/internal/metric-store"
"github.com/cloudfoundry/metric-store-release/src/internal/metrics"
"github.com/cloudfoundry/metric-store-release/src/internal/routing"
"github.com/cloudfoundry/metric-store-release/src/internal/scraping"
Expand Down Expand Up @@ -133,6 +133,11 @@ func (app *MetricStoreApp) Run() {
metric_store.WithQueryTimeout(app.cfg.QueryTimeout),
metric_store.WithQueryLogging(app.cfg.LogQueries),
metric_store.WithConcurrentQueryLimit(app.cfg.MaxConcurrentQueries),
metric_store.WithInternodeConnectionConfig(
app.cfg.InternodeMaxRetries,
app.cfg.InternodeRetryDelay,
app.cfg.InternodeConnectTimeout,
),
)
store.Start()

Expand Down Expand Up @@ -253,6 +258,18 @@ func (app *MetricStoreApp) startMetricsServer(tlsConfig *tls.Config) {
metrics.WithCounter(metrics.MetricStoreCollectedPointsTotal, prometheus.CounterOpts{
Help: "Number of points collected by a metric-store instance from remote nodes",
}),
metrics.WithLabelledCounter(metrics.MetricStoreInternodeConnectionAttemptsTotal, prometheus.CounterOpts{
Help: "Number of connection attempts to remote metric-store nodes",
}, []string{"node"}),
metrics.WithLabelledCounter(metrics.MetricStoreInternodeConnectionFailuresTotal, prometheus.CounterOpts{
Help: "Number of failed connection attempts to remote metric-store nodes",
}, []string{"node"}),
metrics.WithLabelledCounter(metrics.MetricStoreInternodeConnectionSuccessesTotal, prometheus.CounterOpts{
Help: "Number of successful connections to remote metric-store nodes",
}, []string{"node"}),
metrics.WithLabelledGauge(metrics.MetricStoreInternodeConnectionState, prometheus.GaugeOpts{
Help: "Current connection state to remote metric-store nodes (0=disconnected, 1=connected)",
}, []string{"node"}),
)

app.metricsMutex.Lock()
Expand Down
40 changes: 37 additions & 3 deletions src/internal/handoff/write_replayer.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (

"github.com/cloudfoundry/metric-store-release/src/internal/metrics"
"github.com/cloudfoundry/metric-store-release/src/internal/ticker"
"github.com/cloudfoundry/metric-store-release/src/pkg/leanstreams"
"github.com/cloudfoundry/metric-store-release/src/pkg/logger"
"github.com/cloudfoundry/metric-store-release/src/pkg/rpc"
)
Expand Down Expand Up @@ -55,8 +56,9 @@ type WriteReplayer struct {
mu sync.RWMutex
done chan struct{}

queue Queue
client tcpClient
queue Queue
client tcpClient // static client (legacy)
reconnectableClient reconnectableClient // client that can reconnect

log *logger.Logger
metrics metrics.Registrar
Expand All @@ -66,6 +68,11 @@ type tcpClient interface {
Write(data []byte) (int, error)
}

// reconnectableClient is satisfied by *leanstreams.Connection
type reconnectableClient interface {
Client() (*leanstreams.TCPClient, error)
}

type Queue interface {
Advance() error
Append([]byte) error
Expand Down Expand Up @@ -109,6 +116,12 @@ func WithWriteReplayerLogger(log *logger.Logger) WriteReplayerOption {
}
}

func WithWriteReplayerReconnectableClient(client reconnectableClient) WriteReplayerOption {
return func(w *WriteReplayer) {
w.reconnectableClient = client
}
}

// Open opens the WriteReplayer. It will read and write data present in dir, and
// start transmitting data to the node. A WriteReplayer must be opened before it
// can accept hinted data.
Expand Down Expand Up @@ -225,7 +238,28 @@ func (w *WriteReplayer) SendWrite() (int, error) {
return 0, err
}

bytesWritten, err := w.client.Write(payload)
// Get the client to use for writing
var client tcpClient
if w.reconnectableClient != nil {
// Use reconnectable client (preferred) - it will attempt to reconnect if needed
client, err = w.reconnectableClient.Client()
if err != nil {
w.log.Error("error getting client for replay", err)
w.metrics.Inc(metrics.MetricStoreReplayerReplayErrorsTotal, w.targetNodeIndex)
return 0, err
}
} else {
// Fallback to static client (legacy behavior)
client = w.client
if client == nil {
err := fmt.Errorf("no client available")
w.log.Error("error replaying", err)
w.metrics.Inc(metrics.MetricStoreReplayerReplayErrorsTotal, w.targetNodeIndex)
return 0, err
}
}

bytesWritten, err := client.Write(payload)

if err != nil {
w.log.Error("error replaying", err)
Expand Down
Loading
Loading