88 "time"
99
1010 "github.com/syndtr/goleveldb/leveldb"
11+ "github.com/syndtr/goleveldb/leveldb/opt"
1112 "github.com/syndtr/goleveldb/leveldb/util"
1213)
1314
@@ -44,7 +45,6 @@ type Iterator interface {
4445// Implementations of this interface must be safe for any number of concurrent
4546// readers with one writer.
4647type Storage interface {
47-
4848 // Opens/Initialize the storage
4949 Open () error
5050
@@ -95,7 +95,6 @@ type storage struct {
9595
9696// New creates a new Storage backed by LevelDB.
9797func New (db * leveldb.DB ) (Storage , error ) {
98-
9998 return & storage {
10099 db : db ,
101100 recovered : make (chan struct {}),
@@ -106,35 +105,23 @@ func New(db *leveldb.DB) (Storage, error) {
106105
107106// Iterator returns an iterator that traverses over a snapshot of the storage.
108107func (s * storage ) Iterator () (Iterator , error ) {
109- snap , err := s .db .GetSnapshot ()
110- if err != nil {
111- return nil , err
112- }
113-
114108 return & iterator {
115- iter : s .db .NewIterator (nil , nil ),
116- snap : snap ,
109+ iter : s .db .NewIterator (nil , & opt.ReadOptions {
110+ DontFillCache : true ,
111+ }),
117112 }, nil
118113}
119114
120115// Iterator returns an iterator that traverses over a snapshot of the storage.
121116func (s * storage ) IteratorWithRange (start , limit []byte ) (Iterator , error ) {
122- snap , err := s .db .GetSnapshot ()
123- if err != nil {
124- return nil , err
125- }
126-
127- if limit != nil && len (limit ) > 0 {
117+ if len (limit ) > 0 {
128118 return & iterator {
129119 iter : s .db .NewIterator (& util.Range {Start : start , Limit : limit }, nil ),
130- snap : snap ,
131120 }, nil
132121 }
133122 return & iterator {
134123 iter : s .db .NewIterator (util .BytesPrefix (start ), nil ),
135- snap : snap ,
136124 }, nil
137-
138125}
139126
140127func (s * storage ) Has (key string ) (bool , error ) {
0 commit comments