jmurzy / codesearch

Automatically exported from code.google.com/p/codesearch
BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

Index update fails on Windows #7

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. cindex any/path
2. cindex
3.

What is the expected output? 
The index is updated.

What do you see instead?
After merging the master index with the updated index, the rename of 
.csearchindex~~ to .csearchindex fail. This is possibly due to open file 
handles.

What version of the product are you using? On what operating system?
Windows 7, 64 bit

Please provide any additional information below.

Original issue reported on code.google.com by fuz...@gmail.com on 23 Jan 2012 at 10:55

GoogleCodeExporter commented 9 years ago
This may be related - I noticed a number of temp files are not cleaned up on 
the Windows version. This is probably because UnmapViewOfFile does not appear 
to be used, and the handle returned by CreateFileMapping isn't closed. I would 
probably add this info to mmapData and give it a Close() method, which I would 
use right before removing the file.

Original comment by michael....@gmail.com on 24 Jan 2012 at 3:39

GoogleCodeExporter commented 9 years ago
Hahahaha. I decided to try and fix the bugs in the code to make this work. I'm 
still at it. First, the checked in code doesn't compile out of the box anymore, 
due to a missing typecast. That's just the beginning, though. During a simple 
index update, the code generates about a dozen intermediate/temporary files. 
*None* of them are correctly cleaned up. I'm guessing the only reason any of 
this code works at all on *ix systems is due to the lack of file locking. 
Sadly, the code has almost no error checking performed on critical file system 
operations, and none of the abstractions used for file-system objects (Index, 
IndexWriter) even had the ability to close cleanly - they basically only had 
API to open/read/write, with the assumption that the OS would let you call 
Remove on the open file when you were done.

Original comment by osman.br...@gmail.com on 20 May 2012 at 8:03

GoogleCodeExporter commented 9 years ago
I've attached a patch that fixes this, plus the compile error. It also changes 
the path used to store the index (e.g. use APPDATA instead of HOME environment 
variable)

Original comment by fuz...@gmail.com on 24 May 2012 at 6:38

Attachments:

GoogleCodeExporter commented 9 years ago
Thanks - the patch definitely helps - the search index is updated and renamed 
correctly. Two things though - mmap_linux.go needs a copy of unmmapFile, and 
the temporary files generated as a part of the index process are not deleted.

Original comment by michael....@gmail.com on 21 Jun 2012 at 6:17

GoogleCodeExporter commented 9 years ago
This patch seems to get the temp files deleted.

Original comment by michael....@gmail.com on 22 Jun 2012 at 8:05

Attachments: