Mercurial Hosting > luan
comparison lucene/src/luan/modules/lucene/Lucene.luan @ 756:9092e52f94eb
better synchronization for lucene restore
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 18 Jul 2016 05:14:19 -0600 |
parents | 1a101ac9ea46 |
children | e1dfeddfbc7b |
comparison
equal
deleted
inserted
replaced
755:ff865e954934 | 756:9092e52f94eb |
---|---|
7 local Io = require "luan:Io.luan" | 7 local Io = require "luan:Io.luan" |
8 local uri = Io.uri or error() | 8 local uri = Io.uri or error() |
9 local String = require "luan:String.luan" | 9 local String = require "luan:String.luan" |
10 local matches = String.matches or error() | 10 local matches = String.matches or error() |
11 local Rpc = require "luan:Rpc.luan" | 11 local Rpc = require "luan:Rpc.luan" |
12 local Thread = require "luan:Thread.luan" | |
13 local synchronized = Thread.synchronized or error() | |
14 local LuceneIndex = require "java:luan.modules.lucene.LuceneIndex" | 12 local LuceneIndex = require "java:luan.modules.lucene.LuceneIndex" |
15 local NumberFieldParser = require "java:luan.modules.lucene.queryparser.NumberFieldParser" | 13 local NumberFieldParser = require "java:luan.modules.lucene.queryparser.NumberFieldParser" |
16 local StringFieldParser = require "java:luan.modules.lucene.queryparser.StringFieldParser" | 14 local StringFieldParser = require "java:luan.modules.lucene.queryparser.StringFieldParser" |
17 local SaneQueryParser = require "java:luan.modules.lucene.queryparser.SaneQueryParser" | 15 local SaneQueryParser = require "java:luan.modules.lucene.queryparser.SaneQueryParser" |
18 local Version = require "java:org.apache.lucene.util.Version" | 16 local Version = require "java:org.apache.lucene.util.Version" |
114 zip_file.zip(base,t) | 112 zip_file.zip(base,t) |
115 end ) | 113 end ) |
116 end | 114 end |
117 | 115 |
118 function index.restore(zip_file) | 116 function index.restore(zip_file) |
119 local lucene_dir = uri("file:"..index.dir) | 117 java_index.run_in_lock( function() |
120 local before_restore = lucene_dir.parent().child("before_restore.zip") | 118 local lucene_dir = uri("file:"..index.dir) |
121 index.zip(before_restore) | 119 local before_restore = lucene_dir.parent().child("before_restore.zip") |
122 java_index.close() | 120 index.zip(before_restore) |
123 lucene_dir.delete() | 121 java_index.close() |
124 zip_file.unzip(lucene_dir.parent().to_string()) | 122 lucene_dir.delete() |
125 java_index.reopen() | 123 zip_file.unzip(lucene_dir.parent().to_string()) |
124 java_index.reopen() | |
125 end ) | |
126 end | 126 end |
127 index.restore = synchronized(index.restore) | |
128 | 127 |
129 local function multi_error() | 128 local function multi_error() |
130 error "multiple lucene instances" | 129 error "multiple lucene instances" |
131 end | 130 end |
132 | 131 |