@@ -88,38 +88,61 @@ func describeEtcdState(state EtcdState) string {
8888
8989 descHTML = append (descHTML , fmt .Sprintf ("<p style=\" margin: 0.25em 0;\" >state, rev: %d, compactRev: %d</p>" , state .Revision , state .CompactRevision ))
9090
91- if len (state .KeyValues ) > 0 {
91+ keys := []string {}
92+ for i , v := range state .KeyValues {
93+ if v == nil {
94+ continue
95+ }
96+ keys = append (keys , state .Keys [i ])
97+ }
98+
99+ if len (keys ) > 0 {
92100 descHTML = append (descHTML , "keys: <ul style=\" margin: 0.25em 0;\" >" )
93101
94- keys := slices .Collect (maps .Keys (state .KeyValues ))
95102 sort .Strings (keys )
96103 for _ , key := range keys {
97104 descHTML = append (descHTML , fmt .Sprintf ("<li style=\" margin: 0.25em 0;\" ><strong>%s</strong> - " , key ))
98105
99- value := state .KeyValues [ key ]
106+ value , _ := state .GetValue ( key )
100107 if value .Value .Value != "" {
101108 descHTML = append (descHTML , fmt .Sprintf ("val: %q, " , value .Value .Value ))
102109 }
103110 if value .Value .Hash != 0 {
104111 descHTML = append (descHTML , fmt .Sprintf ("hash: %d, " , value .Value .Hash ))
105112 }
106- lease := state .KeyLeases [key ]
107- if lease != 0 {
108- descHTML = append (descHTML , fmt .Sprintf ("lease: %d, " , lease ))
109- }
113+ descHTML = append (descHTML , fmt .Sprintf ("mod: %d, ver: %d" , value .ModRevision , value .Version ))
110114
111- descHTML = append (descHTML , fmt .Sprintf ("mod: %d, ver: %d</li>" , value .ModRevision , value .Version ))
115+ for i , k := range state .Keys {
116+ if k == key {
117+ if state .KeyLeases [i ] != nil {
118+ descHTML = append (descHTML , fmt .Sprintf (", lease: %d" , state .KeyLeases [i ].LeaseID ))
119+ }
120+ break
121+ }
122+ }
123+ descHTML = append (descHTML , "</li>" )
112124 }
113125
114126 descHTML = append (descHTML , "</ul>" )
115127 }
116128
117- if len (state .Leases ) > 0 {
129+ leasesMap := make (map [int64 ]struct {})
130+ for _ , l := range state .KeyLeases {
131+ if l != nil {
132+ leasesMap [l .LeaseID ] = struct {}{}
133+ }
134+ }
135+ for _ , l := range state .Leases {
136+ if l != nil {
137+ leasesMap [l .LeaseID ] = struct {}{}
138+ }
139+ }
140+ if len (leasesMap ) > 0 {
118141 descHTML = append (descHTML , "leases: <ul style=\" margin: 0.25em 0;\" >" )
119- leases := slices .Collect (maps .Keys (state . Leases ))
120- slices . Sort ( leases )
121- for _ , lease := range leases {
122- descHTML = append (descHTML , fmt .Sprintf ("<li style=\" margin: 0.25em 0;\" ><strong>%d</strong></li>" , lease ))
142+ leaseIDs := slices .Collect (maps .Keys (leasesMap ))
143+ sort . Slice ( leaseIDs , func ( i , j int ) bool { return leaseIDs [ i ] < leaseIDs [ j ] } )
144+ for _ , id := range leaseIDs {
145+ descHTML = append (descHTML , fmt .Sprintf ("<li style=\" margin: 0.25em 0;\" ><strong>%d</strong></li>" , id ))
123146 }
124147 descHTML = append (descHTML , "</ul>" )
125148 }
0 commit comments