Skip to content

Commit

Permalink
Fix: Mirror network endpoints
Browse files Browse the repository at this point in the history
Signed-off-by: Emanuel Pargov <bamzedev@gmail.com>
  • Loading branch information
bamzedev committed Mar 20, 2023
1 parent 3613e12 commit 9325a37
Show file tree
Hide file tree
Showing 6 changed files with 612 additions and 22 deletions.
5 changes: 2 additions & 3 deletions client.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,8 @@ type _Operator struct {
}

var mainnetMirror = []string{"mainnet-public.mirrornode.hedera.com:443"}
var testnetMirror = []string{"hcs.testnet.mirrornode.hedera.com:5600"}
var previewnetMirror = []string{"hcs.previewnet.mirrornode.hedera.com:5600"}
var testnetMirror = []string{"testnet.mirrornode.hedera.com:443"}
var previewnetMirror = []string{"previewnet.mirrornode.hedera.com:443"}

func ClientForNetwork(network map[string]AccountID) *Client {
net := _NewNetwork()
Expand Down Expand Up @@ -453,7 +453,6 @@ func (client *Client) GetMirrorNetwork() []string {

func (client *Client) SetTransportSecurity(tls bool) *Client {
client.network._SetTransportSecurity(tls)
client.mirrorNetwork._SetTransportSecurity(tls)

return client
}
Expand Down
10 changes: 7 additions & 3 deletions client_unit_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,15 +101,18 @@ func TestUnitClientSetNetworkExtensive(t *testing.T) {
err = client.SetNetwork(nodes)
require.NoError(t, err)
network = client.GetNetwork()
networkMirror := client.GetMirrorNetwork()
assert.Equal(t, 1, len(network))
assert.Equal(t, network["2.testnet.hedera.com:50211"], AccountID{0, 0, 5, nil, nil, nil})
// There is only one mirror address, no matter the transport security
assert.Equal(t, networkMirror[0], "testnet.mirrornode.hedera.com:443")

client.SetTransportSecurity(true)
client.SetCertificateVerification(true)
network = client.GetNetwork()
networkTLSMirror := client.GetMirrorNetwork()
networkMirror = client.GetMirrorNetwork()
assert.Equal(t, network["2.testnet.hedera.com:50212"], AccountID{0, 0, 5, nil, nil, nil})
assert.Equal(t, networkTLSMirror[0], "hcs.testnet.mirrornode.hedera.com:443")
assert.Equal(t, networkMirror[0], "testnet.mirrornode.hedera.com:443")

err = client.Close()
require.NoError(t, err)
Expand Down Expand Up @@ -153,7 +156,8 @@ func TestUnitClientSetMirrorNetwork(t *testing.T) {

client.SetTransportSecurity(true)
mirrorNetwork = client.GetMirrorNetwork()
assert.Equal(t, "hcs.testnet.mirrornode.hedera.com:443", mirrorNetwork[0])
// SetTransportSecurity is deprecated, so the mirror node should not be updated
assert.Equal(t, "hcs.testnet.mirrornode.hedera.com:5600", mirrorNetwork[0])

err := client.Close()
require.NoError(t, err)
Expand Down
34 changes: 21 additions & 13 deletions managed_network.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,24 +110,32 @@ func (this *_ManagedNetwork) _SetNetwork(network map[string]_IManagedNode) error

func (this *_ManagedNetwork) _ReadmitNodes() {
now := time.Now()
nextEarliestReadmitTime := time.Now().Add(this.maxNodeReadmitPeriod)

for _, node := range this.nodes {
if node._GetReadmitTime() != nil && node._GetReadmitTime().After(now) && node._GetReadmitTime().Before(nextEarliestReadmitTime) {
nextEarliestReadmitTime = *node._GetReadmitTime()
}
}
if this.earliestReadmitTime.Before(now) {
nextEarliestReadmitTime := now.Add(this.maxNodeReadmitPeriod)

outer:
for _, node := range this.nodes {
for _, healthyNode := range this.healthyNodes {
if node == healthyNode {
continue outer
for _, node := range this.nodes {
if node._GetReadmitTime() != nil && node._GetReadmitTime().After(now) && node._GetReadmitTime().Before(nextEarliestReadmitTime) {
nextEarliestReadmitTime = *node._GetReadmitTime()
}
}

if node._IsHealthy() {
this.healthyNodes = append(this.healthyNodes, node)
this.earliestReadmitTime = nextEarliestReadmitTime
if this.earliestReadmitTime.Before(now.Add(this.minNodeReadmitPeriod)) {
this.earliestReadmitTime = now.Add(this.minNodeReadmitPeriod)
}

outer:
for _, node := range this.nodes {
for _, healthyNode := range this.healthyNodes {
if node == healthyNode {
continue outer
}
}

if node._GetReadmitTime().Before(now) {
this.healthyNodes = append(this.healthyNodes, node)
}
}
}
}
Expand Down

0 comments on commit 9325a37

Please sign in to comment.