diff src/luan/modules/lucene/Lucene.luan @ 1578:c922446f53aa

immutable threading
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 08 Feb 2021 14:16:19 -0700
parents 349eef23a13c
children 83caee2ed4ad
line wrap: on
line diff
--- a/src/luan/modules/lucene/Lucene.luan	Sun Jan 31 16:04:39 2021 -0700
+++ b/src/luan/modules/lucene/Lucene.luan	Mon Feb 08 14:16:19 2021 -0700
@@ -5,6 +5,8 @@
 local pairs = Luan.pairs or error()
 local type = Luan.type or error()
 local set_metatable = Luan.set_metatable or error()
+local get_local_cloned = Luan.get_local_cloned
+local set_local_cloned = Luan.set_local_cloned
 local Boot = require "luan:Boot.luan"
 local Html = require "luan:Html.luan"
 local Number = require "luan:Number.luan"
@@ -25,6 +27,11 @@
 local Lucene = {}
 
 local indexes = {}
+local indexes_mt = {
+	__index = get_local_cloned
+	__new_index = set_local_cloned
+}
+set_metatable(indexes,indexes_mt)
 
 function Rpc.functions.lucene_backup(password,name)
 	Io.password == password or error "wrong password"
@@ -62,10 +69,8 @@
 
 function Lucene.index(index_dir,options)
 	local index = {}
-	if options.name ~= nil then
-		indexes[options.name] = index
-		options.name = nil
-	end
+	local options_name = options.name
+	options.name = nil
 	index.dir = index_dir
 	index_dir = get_file(index_dir)
 	options = options or {}
@@ -74,6 +79,10 @@
 	local java_index = LuceneIndex.getLuceneIndex(index_dir,options)
 	index.java = java_index
 
+	if options_name ~= nil then
+		indexes[options_name] = index
+	end
+
 	index.indexed_fields = {}
 	local mt = {}
 	set_metatable(index.indexed_fields,mt)