@@ -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+
405421func (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