Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Index update fails on Windows #7

Open
GoogleCodeExporter opened this issue Mar 24, 2015 · 5 comments
Open

Index update fails on Windows #7

GoogleCodeExporter opened this issue Mar 24, 2015 · 5 comments

Comments

@GoogleCodeExporter
Copy link

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
Copy link
Author

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
Copy link
Author

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
Copy link
Author

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
Copy link
Author

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
Copy link
Author

This patch seems to get the temp files deleted.

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

Attachments:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant