Skip to content

Commit d004a92

Browse files
Fix commit nil issue (#655)
1 parent 653d4bf commit d004a92

1 file changed

Lines changed: 24 additions & 10 deletions

File tree

block/manager.go

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,22 @@ func (m *Manager) getRemainingSleep(start time.Time) time.Duration {
402402
return sleepDuration
403403
}
404404

405+
func (m *Manager) getCommit(header types.Header) (*types.Commit, error) {
406+
headerBytes, err := header.MarshalBinary()
407+
if err != nil {
408+
return nil, err
409+
}
410+
sign, err := m.proposerKey.Sign(headerBytes)
411+
if err != nil {
412+
return nil, err
413+
}
414+
return &types.Commit{
415+
Height: header.Height,
416+
HeaderHash: header.Hash(),
417+
Signatures: []types.Signature{sign},
418+
}, nil
419+
}
420+
405421
func (m *Manager) publishBlock(ctx context.Context) error {
406422
var lastCommit *types.Commit
407423
var lastHeaderHash [32]byte
@@ -438,19 +454,10 @@ func (m *Manager) publishBlock(ctx context.Context) error {
438454
block = m.executor.CreateBlock(newHeight, lastCommit, lastHeaderHash, m.lastState)
439455
m.logger.Debug("block info", "num_tx", len(block.Data.Txs))
440456

441-
headerBytes, err := block.Header.MarshalBinary()
457+
commit, err := m.getCommit(block.Header)
442458
if err != nil {
443459
return err
444460
}
445-
sign, err := m.proposerKey.Sign(headerBytes)
446-
if err != nil {
447-
return err
448-
}
449-
commit = &types.Commit{
450-
Height: block.Header.Height,
451-
HeaderHash: block.Header.Hash(),
452-
Signatures: []types.Signature{sign},
453-
}
454461

455462
// SaveBlock commits the DB tx
456463
err = m.store.SaveBlock(block, commit)
@@ -466,6 +473,13 @@ func (m *Manager) publishBlock(ctx context.Context) error {
466473
return err
467474
}
468475

476+
if commit == nil {
477+
commit, err = m.getCommit(block.Header)
478+
if err != nil {
479+
return err
480+
}
481+
}
482+
469483
// SaveBlock commits the DB tx
470484
err = m.store.SaveBlock(block, commit)
471485
if err != nil {

0 commit comments

Comments
 (0)