Skip to content

Commit d611b10

Browse files
committed
[FAB-2579] Fix inconsistencies in ledger package
https://jira.hyperledger.org/browse/FAB-2579 This changeset: 1. Removes the stuttering that was prevalent in filenames and package names throughout the package 2. Updates function definitions where appropriate 3. Makes the layout of "ram" and "json" implementation consistent with the "file" one by moving the relevant functions to `factory.go` 4. Switches all panic calls to their logger-equivalents. (We will be doing this for all packages inside `orderer`.) 5. Per Binh's request: creates paths via the `filepath.Join` call Change-Id: I918519cf66b3287864560d1fa2e6734b6953d657 Signed-off-by: Kostas Christidis <[email protected]>
1 parent fd47bea commit d611b10

24 files changed

+561
-498
lines changed

orderer/common/deliver/deliver.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import (
2323
"github.com/hyperledger/fabric/common/policies"
2424
"github.com/hyperledger/fabric/orderer/common/filter"
2525
"github.com/hyperledger/fabric/orderer/common/sigfilter"
26-
ordererledger "github.com/hyperledger/fabric/orderer/ledger"
26+
"github.com/hyperledger/fabric/orderer/ledger"
2727
cb "github.com/hyperledger/fabric/protos/common"
2828
ab "github.com/hyperledger/fabric/protos/orderer"
2929
"github.com/op/go-logging"
@@ -50,7 +50,7 @@ type Support interface {
5050
PolicyManager() policies.Manager
5151

5252
// Reader returns the chain Reader for the chain
53-
Reader() ordererledger.Reader
53+
Reader() ledger.Reader
5454

5555
// SharedConfig returns the shared config manager for this chain
5656
SharedConfig() configvaluesapi.Orderer

orderer/common/deliver/deliver_test.go

+23-23
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import (
2626
mockconfigvaluesorderer "github.com/hyperledger/fabric/common/mocks/configvalues/channel/orderer"
2727
mockpolicies "github.com/hyperledger/fabric/common/mocks/policies"
2828
"github.com/hyperledger/fabric/common/policies"
29-
ordererledger "github.com/hyperledger/fabric/orderer/ledger"
29+
"github.com/hyperledger/fabric/orderer/ledger"
3030
ramledger "github.com/hyperledger/fabric/orderer/ledger/ram"
3131
cb "github.com/hyperledger/fabric/protos/common"
3232
ab "github.com/hyperledger/fabric/protos/orderer"
@@ -81,7 +81,7 @@ func (mm *mockSupportManager) GetChain(chainID string) (Support, bool) {
8181
}
8282

8383
type mockSupport struct {
84-
ledger ordererledger.ReadWriter
84+
ledger ledger.ReadWriter
8585
sharedConfig *mockconfigvaluesorderer.SharedConfig
8686
policyManager *mockpolicies.Manager
8787
}
@@ -90,11 +90,11 @@ func (mcs *mockSupport) PolicyManager() policies.Manager {
9090
return mcs.policyManager
9191
}
9292

93-
func (mcs *mockSupport) Reader() ordererledger.Reader {
93+
func (mcs *mockSupport) Reader() ledger.Reader {
9494
return mcs.ledger
9595
}
9696

97-
func NewRAMLedger() ordererledger.ReadWriter {
97+
func NewRAMLedger() ledger.ReadWriter {
9898
rlf := ramledger.New(ledgerSize + 1)
9999
rl, _ := rlf.GetOrCreate(provisional.TestChainID)
100100
rl.Append(genesisBlock)
@@ -118,11 +118,11 @@ func newMockMultichainManager() *mockSupportManager {
118118
return mm
119119
}
120120

121-
var seekOldest = &ab.SeekPosition{Type: &ab.SeekPosition_Oldest{&ab.SeekOldest{}}}
122-
var seekNewest = &ab.SeekPosition{Type: &ab.SeekPosition_Newest{&ab.SeekNewest{}}}
121+
var seekOldest = &ab.SeekPosition{Type: &ab.SeekPosition_Oldest{Oldest: &ab.SeekOldest{}}}
122+
var seekNewest = &ab.SeekPosition{Type: &ab.SeekPosition_Newest{Newest: &ab.SeekNewest{}}}
123123

124124
func seekSpecified(number uint64) *ab.SeekPosition {
125-
return &ab.SeekPosition{Type: &ab.SeekPosition_Specified{&ab.SeekSpecified{Number: number}}}
125+
return &ab.SeekPosition{Type: &ab.SeekPosition_Specified{Specified: &ab.SeekSpecified{Number: number}}}
126126
}
127127

128128
func makeSeek(chainID string, seekInfo *ab.SeekInfo) *cb.Envelope {
@@ -142,8 +142,8 @@ func makeSeek(chainID string, seekInfo *ab.SeekInfo) *cb.Envelope {
142142
func TestOldestSeek(t *testing.T) {
143143
mm := newMockMultichainManager()
144144
for i := 1; i < ledgerSize; i++ {
145-
ledger := mm.chains[systemChainID].ledger
146-
ledger.Append(ordererledger.CreateNextBlock(ledger, []*cb.Envelope{&cb.Envelope{Payload: []byte(fmt.Sprintf("%d", i))}}))
145+
l := mm.chains[systemChainID].ledger
146+
l.Append(ledger.CreateNextBlock(l, []*cb.Envelope{&cb.Envelope{Payload: []byte(fmt.Sprintf("%d", i))}}))
147147
}
148148

149149
m := newMockD()
@@ -181,8 +181,8 @@ func TestOldestSeek(t *testing.T) {
181181
func TestNewestSeek(t *testing.T) {
182182
mm := newMockMultichainManager()
183183
for i := 1; i < ledgerSize; i++ {
184-
ledger := mm.chains[systemChainID].ledger
185-
ledger.Append(ordererledger.CreateNextBlock(ledger, []*cb.Envelope{&cb.Envelope{Payload: []byte(fmt.Sprintf("%d", i))}}))
184+
l := mm.chains[systemChainID].ledger
185+
l.Append(ledger.CreateNextBlock(l, []*cb.Envelope{&cb.Envelope{Payload: []byte(fmt.Sprintf("%d", i))}}))
186186
}
187187

188188
m := newMockD()
@@ -213,8 +213,8 @@ func TestNewestSeek(t *testing.T) {
213213
func TestSpecificSeek(t *testing.T) {
214214
mm := newMockMultichainManager()
215215
for i := 1; i < ledgerSize; i++ {
216-
ledger := mm.chains[systemChainID].ledger
217-
ledger.Append(ordererledger.CreateNextBlock(ledger, []*cb.Envelope{&cb.Envelope{Payload: []byte(fmt.Sprintf("%d", i))}}))
216+
l := mm.chains[systemChainID].ledger
217+
l.Append(ledger.CreateNextBlock(l, []*cb.Envelope{&cb.Envelope{Payload: []byte(fmt.Sprintf("%d", i))}}))
218218
}
219219

220220
m := newMockD()
@@ -251,8 +251,8 @@ func TestSpecificSeek(t *testing.T) {
251251
func TestUnauthorizedSeek(t *testing.T) {
252252
mm := newMockMultichainManager()
253253
for i := 1; i < ledgerSize; i++ {
254-
ledger := mm.chains[systemChainID].ledger
255-
ledger.Append(ordererledger.CreateNextBlock(ledger, []*cb.Envelope{&cb.Envelope{Payload: []byte(fmt.Sprintf("%d", i))}}))
254+
l := mm.chains[systemChainID].ledger
255+
l.Append(ledger.CreateNextBlock(l, []*cb.Envelope{&cb.Envelope{Payload: []byte(fmt.Sprintf("%d", i))}}))
256256
}
257257
mm.chains[systemChainID].policyManager.Policy.Err = fmt.Errorf("Fail to evaluate policy")
258258

@@ -277,8 +277,8 @@ func TestUnauthorizedSeek(t *testing.T) {
277277
func TestBadSeek(t *testing.T) {
278278
mm := newMockMultichainManager()
279279
for i := 1; i < ledgerSize; i++ {
280-
ledger := mm.chains[systemChainID].ledger
281-
ledger.Append(ordererledger.CreateNextBlock(ledger, []*cb.Envelope{&cb.Envelope{Payload: []byte(fmt.Sprintf("%d", i))}}))
280+
l := mm.chains[systemChainID].ledger
281+
l.Append(ledger.CreateNextBlock(l, []*cb.Envelope{&cb.Envelope{Payload: []byte(fmt.Sprintf("%d", i))}}))
282282
}
283283

284284
m := newMockD()
@@ -302,8 +302,8 @@ func TestBadSeek(t *testing.T) {
302302
func TestFailFastSeek(t *testing.T) {
303303
mm := newMockMultichainManager()
304304
for i := 1; i < ledgerSize; i++ {
305-
ledger := mm.chains[systemChainID].ledger
306-
ledger.Append(ordererledger.CreateNextBlock(ledger, []*cb.Envelope{&cb.Envelope{Payload: []byte(fmt.Sprintf("%d", i))}}))
305+
l := mm.chains[systemChainID].ledger
306+
l.Append(ledger.CreateNextBlock(l, []*cb.Envelope{&cb.Envelope{Payload: []byte(fmt.Sprintf("%d", i))}}))
307307
}
308308

309309
m := newMockD()
@@ -336,8 +336,8 @@ func TestFailFastSeek(t *testing.T) {
336336
func TestBlockingSeek(t *testing.T) {
337337
mm := newMockMultichainManager()
338338
for i := 1; i < ledgerSize; i++ {
339-
ledger := mm.chains[systemChainID].ledger
340-
ledger.Append(ordererledger.CreateNextBlock(ledger, []*cb.Envelope{&cb.Envelope{Payload: []byte(fmt.Sprintf("%d", i))}}))
339+
l := mm.chains[systemChainID].ledger
340+
l.Append(ledger.CreateNextBlock(l, []*cb.Envelope{&cb.Envelope{Payload: []byte(fmt.Sprintf("%d", i))}}))
341341
}
342342

343343
m := newMockD()
@@ -363,8 +363,8 @@ func TestBlockingSeek(t *testing.T) {
363363
case <-time.After(50 * time.Millisecond):
364364
}
365365

366-
ledger := mm.chains[systemChainID].ledger
367-
ledger.Append(ordererledger.CreateNextBlock(ledger, []*cb.Envelope{&cb.Envelope{Payload: []byte(fmt.Sprintf("%d", ledgerSize+1))}}))
366+
l := mm.chains[systemChainID].ledger
367+
l.Append(ledger.CreateNextBlock(l, []*cb.Envelope{&cb.Envelope{Payload: []byte(fmt.Sprintf("%d", ledgerSize+1))}}))
368368

369369
select {
370370
case deliverReply := <-m.sendChan:

orderer/ledger/blackbox_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
package ordererledger_test
17+
package ledger_test
1818

1919
import (
2020
"bytes"

orderer/ledger/file/factory.go

+17-17
Original file line numberDiff line numberDiff line change
@@ -21,58 +21,58 @@ import (
2121

2222
"github.com/hyperledger/fabric/common/ledger/blkstorage"
2323
"github.com/hyperledger/fabric/common/ledger/blkstorage/fsblkstorage"
24-
ordererledger "github.com/hyperledger/fabric/orderer/ledger"
24+
"github.com/hyperledger/fabric/orderer/ledger"
2525
)
2626

2727
type fileLedgerFactory struct {
2828
blkstorageProvider blkstorage.BlockStoreProvider
29-
ledgers map[string]ordererledger.ReadWriter
29+
ledgers map[string]ledger.ReadWriter
3030
mutex sync.Mutex
3131
}
3232

3333
// GetOrCreate gets an existing ledger (if it exists) or creates it if it does not
34-
func (lf *fileLedgerFactory) GetOrCreate(chainID string) (ordererledger.ReadWriter, error) {
35-
lf.mutex.Lock()
36-
defer lf.mutex.Unlock()
34+
func (flf *fileLedgerFactory) GetOrCreate(chainID string) (ledger.ReadWriter, error) {
35+
flf.mutex.Lock()
36+
defer flf.mutex.Unlock()
3737

3838
key := chainID
3939
// check cache
40-
ledger, ok := lf.ledgers[key]
40+
ledger, ok := flf.ledgers[key]
4141
if ok {
4242
return ledger, nil
4343
}
4444
// open fresh
45-
blockStore, err := lf.blkstorageProvider.OpenBlockStore(key)
45+
blockStore, err := flf.blkstorageProvider.OpenBlockStore(key)
4646
if err != nil {
4747
return nil, err
4848
}
4949
ledger = &fileLedger{blockStore: blockStore, signal: make(chan struct{})}
50-
lf.ledgers[key] = ledger
50+
flf.ledgers[key] = ledger
5151
return ledger, nil
5252
}
5353

54-
// ChainIDs returns the chain IDs the Factory is aware of
55-
func (lf *fileLedgerFactory) ChainIDs() []string {
56-
chainIDs, err := lf.blkstorageProvider.List()
54+
// ChainIDs returns the chain IDs the factory is aware of
55+
func (flf *fileLedgerFactory) ChainIDs() []string {
56+
chainIDs, err := flf.blkstorageProvider.List()
5757
if err != nil {
58-
panic(err)
58+
logger.Panic(err)
5959
}
6060
return chainIDs
6161
}
6262

63-
// Close closes the file ledgers served by this factory
64-
func (lf *fileLedgerFactory) Close() {
65-
lf.blkstorageProvider.Close()
63+
// Close releases all resources acquired by the factory
64+
func (flf *fileLedgerFactory) Close() {
65+
flf.blkstorageProvider.Close()
6666
}
6767

6868
// New creates a new ledger factory
69-
func New(directory string) ordererledger.Factory {
69+
func New(directory string) ledger.Factory {
7070
return &fileLedgerFactory{
7171
blkstorageProvider: fsblkstorage.NewProvider(
7272
fsblkstorage.NewConf(directory, -1),
7373
&blkstorage.IndexConfig{
7474
AttrsToIndex: []blkstorage.IndexableAttr{blkstorage.IndexableAttrBlockNum}},
7575
),
76-
ledgers: make(map[string]ordererledger.ReadWriter),
76+
ledgers: make(map[string]ledger.ReadWriter),
7777
}
7878
}

orderer/ledger/file/fileledger.go orderer/ledger/file/impl.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ package fileledger
1818

1919
import (
2020
"github.com/hyperledger/fabric/common/ledger/blkstorage"
21-
ordererledger "github.com/hyperledger/fabric/orderer/ledger"
21+
ledger "github.com/hyperledger/fabric/orderer/ledger"
2222
cb "github.com/hyperledger/fabric/protos/common"
2323
ab "github.com/hyperledger/fabric/protos/orderer"
2424
"github.com/op/go-logging"
2525
)
2626

27-
var logger = logging.MustGetLogger("ordererledger/fileledger")
27+
var logger = logging.MustGetLogger("orderer/fileledger")
2828
var closedChan chan struct{}
2929

3030
func init() {
@@ -69,33 +69,33 @@ func (i *fileLedgerIterator) ReadyChan() <-chan struct{} {
6969

7070
// Iterator returns an Iterator, as specified by a cb.SeekInfo message, and its
7171
// starting block number
72-
func (fl *fileLedger) Iterator(startPosition *ab.SeekPosition) (ordererledger.Iterator, uint64) {
72+
func (fl *fileLedger) Iterator(startPosition *ab.SeekPosition) (ledger.Iterator, uint64) {
7373
switch start := startPosition.Type.(type) {
7474
case *ab.SeekPosition_Oldest:
7575
return &fileLedgerIterator{ledger: fl, blockNumber: 0}, 0
7676
case *ab.SeekPosition_Newest:
7777
info, err := fl.blockStore.GetBlockchainInfo()
7878
if err != nil {
79-
panic(err)
79+
logger.Panic(err)
8080
}
8181
newestBlockNumber := info.Height - 1
8282
return &fileLedgerIterator{ledger: fl, blockNumber: newestBlockNumber}, newestBlockNumber
8383
case *ab.SeekPosition_Specified:
8484
height := fl.Height()
8585
if start.Specified.Number > height {
86-
return &ordererledger.NotFoundErrorIterator{}, 0
86+
return &ledger.NotFoundErrorIterator{}, 0
8787
}
8888
return &fileLedgerIterator{ledger: fl, blockNumber: start.Specified.Number}, start.Specified.Number
8989
}
9090
// This line should be unreachable, but the compiler requires it
91-
return &ordererledger.NotFoundErrorIterator{}, 0
91+
return &ledger.NotFoundErrorIterator{}, 0
9292
}
9393

9494
// Height returns the number of blocks on the ledger
9595
func (fl *fileLedger) Height() uint64 {
9696
info, err := fl.blockStore.GetBlockchainInfo()
9797
if err != nil {
98-
panic(err)
98+
logger.Panic(err)
9999
}
100100
return info.Height
101101
}

orderer/ledger/file/fileledger_test.go orderer/ledger/file/impl_test.go

+9-9
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import (
2323
"testing"
2424

2525
"github.com/hyperledger/fabric/common/configtx/tool/provisional"
26-
ordererledger "github.com/hyperledger/fabric/orderer/ledger"
26+
"github.com/hyperledger/fabric/orderer/ledger"
2727
cb "github.com/hyperledger/fabric/protos/common"
2828
ab "github.com/hyperledger/fabric/protos/orderer"
2929

@@ -39,7 +39,7 @@ func init() {
3939
type testEnv struct {
4040
t *testing.T
4141
location string
42-
flf ordererledger.Factory
42+
flf ledger.Factory
4343
}
4444

4545
func initialize(t *testing.T) (*testEnv, *fileLedger) {
@@ -75,7 +75,7 @@ func TestInitialization(t *testing.T) {
7575
if fl.Height() != 1 {
7676
t.Fatalf("Block height should be 1")
7777
}
78-
block := ordererledger.GetBlock(fl, 0)
78+
block := ledger.GetBlock(fl, 0)
7979
if block == nil {
8080
t.Fatalf("Error retrieving genesis block")
8181
}
@@ -92,7 +92,7 @@ func TestReinitialization(t *testing.T) {
9292
defer tev.tearDown()
9393

9494
// create a block to add to the ledger
95-
b1 := ordererledger.CreateNextBlock(leger1, []*cb.Envelope{&cb.Envelope{Payload: []byte("My Data")}})
95+
b1 := ledger.CreateNextBlock(leger1, []*cb.Envelope{&cb.Envelope{Payload: []byte("My Data")}})
9696

9797
// add the block to the ledger
9898
leger1.Append(b1)
@@ -122,7 +122,7 @@ func TestReinitialization(t *testing.T) {
122122
if fl.Height() != 2 {
123123
t.Fatalf("Block height should be 2. Got %v", fl.Height())
124124
}
125-
block := ordererledger.GetBlock(fl, 1)
125+
block := ledger.GetBlock(fl, 1)
126126
if block == nil {
127127
t.Fatalf("Error retrieving block 1")
128128
}
@@ -159,11 +159,11 @@ func TestAddition(t *testing.T) {
159159
defer tev.tearDown()
160160
info, _ := fl.blockStore.GetBlockchainInfo()
161161
prevHash := info.CurrentBlockHash
162-
fl.Append(ordererledger.CreateNextBlock(fl, []*cb.Envelope{&cb.Envelope{Payload: []byte("My Data")}}))
162+
fl.Append(ledger.CreateNextBlock(fl, []*cb.Envelope{&cb.Envelope{Payload: []byte("My Data")}}))
163163
if fl.Height() != 2 {
164164
t.Fatalf("Block height should be 2")
165165
}
166-
block := ordererledger.GetBlock(fl, 1)
166+
block := ledger.GetBlock(fl, 1)
167167
if block == nil {
168168
t.Fatalf("Error retrieving genesis block")
169169
}
@@ -175,7 +175,7 @@ func TestAddition(t *testing.T) {
175175
func TestRetrieval(t *testing.T) {
176176
tev, fl := initialize(t)
177177
defer tev.tearDown()
178-
fl.Append(ordererledger.CreateNextBlock(fl, []*cb.Envelope{&cb.Envelope{Payload: []byte("My Data")}}))
178+
fl.Append(ledger.CreateNextBlock(fl, []*cb.Envelope{&cb.Envelope{Payload: []byte("My Data")}}))
179179
it, num := fl.Iterator(&ab.SeekPosition{Type: &ab.SeekPosition_Oldest{}})
180180
if num != 0 {
181181
t.Fatalf("Expected genesis block iterator, but got %d", num)
@@ -221,7 +221,7 @@ func TestBlockedRetrieval(t *testing.T) {
221221
t.Fatalf("Should not be ready for block read")
222222
default:
223223
}
224-
fl.Append(ordererledger.CreateNextBlock(fl, []*cb.Envelope{&cb.Envelope{Payload: []byte("My Data")}}))
224+
fl.Append(ledger.CreateNextBlock(fl, []*cb.Envelope{&cb.Envelope{Payload: []byte("My Data")}}))
225225
select {
226226
case <-signal:
227227
default:

orderer/ledger/fileledger_test.go orderer/ledger/file_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
package ordererledger_test
17+
package ledger_test
1818

1919
import (
2020
"io/ioutil"

0 commit comments

Comments
 (0)