Mercurial Hosting > luan
comparison src/goodjava/lucene/backup/BackupIndexWriter.java @ 1504:f443542d8650
threading
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 11 May 2020 11:13:16 -0600 |
parents | 8a7b6b32c691 |
children | d80395468b4e |
comparison
equal
deleted
inserted
replaced
1503:74c534de211f | 1504:f443542d8650 |
---|---|
7 import java.util.List; | 7 import java.util.List; |
8 import java.util.ArrayList; | 8 import java.util.ArrayList; |
9 import java.util.Map; | 9 import java.util.Map; |
10 import java.util.HashMap; | 10 import java.util.HashMap; |
11 import java.util.Arrays; | 11 import java.util.Arrays; |
12 import java.util.concurrent.Executors; | |
13 import java.util.concurrent.ExecutorService; | |
12 import javax.net.ssl.SSLSocketFactory; | 14 import javax.net.ssl.SSLSocketFactory; |
13 import javax.net.ssl.SSLSocket; | 15 import javax.net.ssl.SSLSocket; |
14 import goodjava.io.IoUtils; | 16 import goodjava.io.IoUtils; |
15 import goodjava.rpc.RpcClient; | 17 import goodjava.rpc.RpcClient; |
16 import goodjava.rpc.RpcCall; | 18 import goodjava.rpc.RpcCall; |
27 private static final Logger logger = LoggerFactory.getLogger(BackupIndexWriter.class); | 29 private static final Logger logger = LoggerFactory.getLogger(BackupIndexWriter.class); |
28 public static String[] backupDomains; | 30 public static String[] backupDomains; |
29 private final String name; | 31 private final String name; |
30 private final File dir; | 32 private final File dir; |
31 private boolean isSyncPending = false; | 33 private boolean isSyncPending = false; |
34 private final ExecutorService exec = Executors.newSingleThreadExecutor(); | |
32 | 35 |
33 public BackupIndexWriter(LuceneIndexWriter indexWriter,File logDir,String name) throws IOException { | 36 public BackupIndexWriter(LuceneIndexWriter indexWriter,File logDir,String name) throws IOException { |
34 super(indexWriter,logDir); | 37 super(indexWriter,logDir); |
35 if( backupDomains == null ) | 38 if( backupDomains == null ) |
36 throw new RuntimeException("must set backupDomains"); | 39 throw new RuntimeException("must set backupDomains"); |
38 File f = new File(System.getProperty("java.io.tmpdir")); | 41 File f = new File(System.getProperty("java.io.tmpdir")); |
39 dir = new File(f,"goodjava.lucene/"+name); | 42 dir = new File(f,"goodjava.lucene/"+name); |
40 IoUtils.mkdirs(dir); | 43 IoUtils.mkdirs(dir); |
41 } | 44 } |
42 | 45 |
46 public synchronized void close() throws IOException { | |
47 super.close(); | |
48 exec.shutdown(); | |
49 } | |
50 | |
43 public synchronized void commit() throws IOException { | 51 public synchronized void commit() throws IOException { |
44 super.commit(); | 52 super.commit(); |
45 //sync(); | 53 //sync(); |
46 if( !isSyncPending ) { | 54 if( !isSyncPending ) { |
47 threadPool.execute(sync); | 55 exec.execute(sync); |
48 isSyncPending = true; | 56 isSyncPending = true; |
49 } | 57 } |
50 } | 58 } |
51 | 59 |
52 public void runSync() { | 60 public void runSync() { |
53 sync.run(); | 61 try { |
62 exec.submit(sync).get(); | |
63 } catch(Exception e) { | |
64 throw new RuntimeException(e); | |
65 } | |
54 } | 66 } |
55 | 67 |
56 private final Runnable sync = new Runnable() { | 68 private final Runnable sync = new Runnable() { |
57 public synchronized void run() { | 69 public void run() { |
58 try { | 70 try { |
59 sync(); | 71 sync(); |
60 } catch(IOException e) { | 72 } catch(IOException e) { |
61 throw new RuntimeException(e); | 73 throw new RuntimeException(e); |
62 } | 74 } |