From 9751227b97a5a406494250b0d4c3e46fc2354981 Mon Sep 17 00:00:00 2001 From: lion Date: Tue, 21 Jun 2022 10:47:28 +0800 Subject: [PATCH] fix the bug of header write and regen the xdb file --- data/ip2region.xdb | Bin 11065998 -> 11065998 bytes maker/golang/main.go | 18 +++++++++++++----- maker/golang/xdb/maker.go | 8 ++++---- maker/golang/xdb/searcher.go | 8 +++++--- 4 files changed, 22 insertions(+), 12 deletions(-) diff --git a/data/ip2region.xdb b/data/ip2region.xdb index e823a6c8c61c40fe36b27e6335e34bdd4e72c6dc..e9e125e8dda12aaaea0400fce5c6e5e48c169b23 100644 GIT binary patch delta 531 zcmWN=*E$ve0Dxhi6_Sz$QbRwz$x4`qf zZ{Y7tL|}eYXb2(Z{Amov{|}}`_aO5^B}~F4LLy~>L`k&7$U=#gMG_~AWr@VgQb~|y zvRqckN=cL?NtRWTBCBPMq)M8k%Ua2hb&@ITWrJkNM%g6UvRSssR>_fVk}KOKPx7Te z3Z+PPNU`jcU9wyD$X?ke`=vw<$U!NULvmP-NSTz&QK^thsgi1`kz-OTb#h!z$VsV} zQ*v4w_y^B#-5ZbjwqDCeP)C^vFx;l~iDG9&?cE5j0$5gC;+8J7u}ly~x8 fKFCM;B%ftUzQ|XZmTxj6-{pt=lwbe&9hjX1eJ7e5 delta 529 zcmWN=S6dAL0DxhiI!Pgg%BpDDm8^)8*`PuhMMEJgS!K24i{fxlSy=~p-1A@jhA!N7 zt><~);O}rCI6aCPQA z$U<2piIODAvRIbLQduU;B}GytO;*TCNtX=Clq|`XRkB*v$XZz^>t%!FNUr3`M#+~= zvRSssR@o*6vR!saq3o1hQY6K)TS{b)?3I18Uk=DYDU~uQmkK!~how@gq*{*1Q8^|x zQY**hgq)O9QYZCtTFyv=G)j{+%UNlWRyil<<$|=yMY$xG<%(RDcDW`Ua$Ro7O}Qnv zrBk}(j@*@da$g=uxAaJ_^hv)wlmU4p%Ah=!Co&|%@>HHlP@c;R3CT-&C9h>fMrBOi h$Xj_Q@8yGx%SZVnpXG~um9Tu1@A5+?{_r#S_dmgln?3*l diff --git a/maker/golang/main.go b/maker/golang/main.go index 329ee34..f2cf866 100644 --- a/maker/golang/main.go +++ b/maker/golang/main.go @@ -69,22 +69,25 @@ func genDb() { tStart := time.Now() maker, err := xdb.NewMaker(indexPolicy, srcFile, dstFile) if err != nil { - log.Fatalf("failed to create maker: %s", err) + fmt.Printf("failed to create %s\n", err) + return } err = maker.Init() if err != nil { - log.Fatalf("failed Init: %s", err) + fmt.Printf("failed Init: %s\n", err) + return } err = maker.Start() if err != nil { - log.Fatalf("failed Start: %s", err) + fmt.Printf("failed Start: %s\n", err) + return } err = maker.End() if err != nil { - log.Fatalf("failed End: %s", err) + fmt.Printf("failed End: %s\n", err) } log.Printf("Done, elapsed: %s\n", time.Since(tStart)) @@ -124,7 +127,8 @@ func testSearch() { searcher, err := xdb.NewSearcher(dbFile) if err != nil { - log.Fatalf("failed to create searcher: %s", err.Error()) + fmt.Printf("failed to create searcher with `%s`: %s\n", dbFile, err.Error()) + return } defer func() { searcher.Close() @@ -228,6 +232,10 @@ func testBench() { } searcher, err := xdb.NewSearcher(dbFile) + if err != nil { + fmt.Printf("failed to create searcher with `%s`: %s\n", dbFile, err) + return + } defer func() { searcher.Close() }() diff --git a/maker/golang/xdb/maker.go b/maker/golang/xdb/maker.go index d71b596..841cd57 100644 --- a/maker/golang/xdb/maker.go +++ b/maker/golang/xdb/maker.go @@ -115,16 +115,16 @@ func (m *Maker) initDbHeader() error { binary.LittleEndian.PutUint16(header, uint16(VersionNo)) // 2, index policy code - binary.LittleEndian.PutUint16(header, uint16(m.indexPolicy)) + binary.LittleEndian.PutUint16(header[2:], uint16(m.indexPolicy)) // 3, generate unix timestamp - binary.LittleEndian.PutUint32(header[2:], uint32(time.Now().Unix())) + binary.LittleEndian.PutUint32(header[4:], uint32(time.Now().Unix())) // 4, index block start ptr - binary.LittleEndian.PutUint32(header[6:], uint32(0)) + binary.LittleEndian.PutUint32(header[8:], uint32(0)) // 5, index block end ptr - binary.LittleEndian.PutUint32(header[10:], uint32(0)) + binary.LittleEndian.PutUint32(header[12:], uint32(0)) _, err = m.dstHandle.Write(header) if err != nil { diff --git a/maker/golang/xdb/searcher.go b/maker/golang/xdb/searcher.go index 0d5ca00..ed4d0f7 100644 --- a/maker/golang/xdb/searcher.go +++ b/maker/golang/xdb/searcher.go @@ -43,9 +43,11 @@ func NewSearcher(dbFile string) (*Searcher, error) { } func (s *Searcher) Close() { - err := s.handle.Close() - if err != nil { - return + if s.handle != nil { + err := s.handle.Close() + if err != nil { + return + } } }