@@ -786,30 +786,18 @@ func (s *ImmuStore) fetchAnyVLog() (vLodID byte, vLog appendable.Appendable) {
786786 return vLogID , s .vLogs [vLogID - 1 ].vLog
787787}
788788
789- func (s * ImmuStore ) fetchVLog (vLogID byte , checkClosed bool ) ( vLog appendable.Appendable , err error ) {
789+ func (s * ImmuStore ) fetchVLog (vLogID byte ) appendable.Appendable {
790790 s .vLogsCond .L .Lock ()
791791 defer s .vLogsCond .L .Unlock ()
792792
793793 for s .vLogs [vLogID - 1 ].unlockedRef == nil {
794- if checkClosed {
795- s .mutex .Lock ()
796- if s .closed {
797- err = ErrAlreadyClosed
798- }
799- s .mutex .Unlock ()
800- }
801-
802- if err != nil {
803- return nil , err
804- }
805-
806794 s .vLogsCond .Wait ()
807795 }
808796
809797 s .vLogUnlockedList .Remove (s .vLogs [vLogID - 1 ].unlockedRef )
810798 s .vLogs [vLogID - 1 ].unlockedRef = nil // locked
811799
812- return s .vLogs [vLogID - 1 ].vLog , nil
800+ return s .vLogs [vLogID - 1 ].vLog
813801}
814802
815803func (s * ImmuStore ) releaseVLog (vLogID byte ) {
@@ -1720,10 +1708,7 @@ func (s *ImmuStore) readValueAt(b []byte, off int64, hvalue [sha256.Size]byte) (
17201708 vLogID , offset := decodeOffset (off )
17211709
17221710 if vLogID > 0 {
1723- vLog , err := s .fetchVLog (vLogID , true )
1724- if err != nil {
1725- return 0 , err
1726- }
1711+ vLog := s .fetchVLog (vLogID )
17271712 defer s .releaseVLog (vLogID )
17281713
17291714 n , err := vLog .ReadAt (b , offset )
@@ -1782,7 +1767,7 @@ func (s *ImmuStore) Sync() error {
17821767 }
17831768
17841769 for i := range s .vLogs {
1785- vLog , _ := s .fetchVLog (i + 1 , false )
1770+ vLog := s .fetchVLog (i + 1 )
17861771 defer s .releaseVLog (i + 1 )
17871772
17881773 err := vLog .Sync ()
@@ -1817,12 +1802,13 @@ func (s *ImmuStore) Close() error {
18171802 merr := multierr .NewMultiErr ()
18181803
18191804 for i := range s .vLogs {
1820- vLog , _ := s .fetchVLog (i + 1 , false )
1805+ vLog := s .fetchVLog (i + 1 )
18211806
18221807 err := vLog .Close ()
18231808 merr .Append (err )
1809+
1810+ s .releaseVLog (i + 1 )
18241811 }
1825- s .vLogsCond .Broadcast ()
18261812
18271813 if s .blBuffer != nil && s .blErr == nil && s .blDone != nil {
18281814 s .log .Infof ("Stopping Binary Linking at '%s'..." , s .path )
0 commit comments