comparison src/goodjava/lucene/backup/Backup.java @ 1512:31b543826ca9

lucene.backup login
author Franklin Schmidt <fschmidt@gmail.com>
date Sat, 23 May 2020 19:01:57 -0600
parents 0ba144491a42
children 736ec76bbf42
comparison
equal deleted inserted replaced
1511:fb5be0e8ca54 1512:31b543826ca9
11 import goodjava.io.IoUtils; 11 import goodjava.io.IoUtils;
12 import goodjava.io.BufferedInputStream; 12 import goodjava.io.BufferedInputStream;
13 import goodjava.rpc.RpcServer; 13 import goodjava.rpc.RpcServer;
14 import goodjava.rpc.RpcCall; 14 import goodjava.rpc.RpcCall;
15 import goodjava.rpc.RpcResult; 15 import goodjava.rpc.RpcResult;
16 import goodjava.rpc.RpcException;
16 import goodjava.logging.Logger; 17 import goodjava.logging.Logger;
17 import goodjava.logging.LoggerFactory; 18 import goodjava.logging.LoggerFactory;
18 import goodjava.lucene.logging.LogFile; 19 import goodjava.lucene.logging.LogFile;
19 import goodjava.lucene.logging.LoggingIndexWriter; 20 import goodjava.lucene.logging.LoggingIndexWriter;
20 import goodjava.lucene.logging.LogOutputStream; 21 import goodjava.lucene.logging.LogOutputStream;
50 //logger.info(call.cmd+" "+Arrays.asList(call.args)); 51 //logger.info(call.cmd+" "+Arrays.asList(call.args));
51 String fileName = null; 52 String fileName = null;
52 if( call.cmd.equals("check") ) { 53 if( call.cmd.equals("check") ) {
53 // nothing 54 // nothing
54 } else if( call.cmd.equals("add") || call.cmd.equals("append") ) { 55 } else if( call.cmd.equals("add") || call.cmd.equals("append") ) {
55 fileName = (String)call.args[2]; 56 fileName = (String)call.args[1];
56 File f = new File(dir,fileName); 57 File f = new File(dir,fileName);
57 if( call.cmd.equals("add") ) 58 if( call.cmd.equals("add") )
58 IoUtils.delete(f); 59 IoUtils.delete(f);
59 LogFile log = new LogFile(f); 60 LogFile log = new LogFile(f);
60 LogOutputStream out = log.output(); 61 LogOutputStream out = log.output();
61 IoUtils.copyAll(call.in,out); 62 IoUtils.copyAll(call.in,out);
62 out.commit(); 63 out.commit();
63 out.close(); 64 out.close();
64 logger.info(call.cmd+" "+fileName+" "+call.lenIn); 65 //logger.info(call.cmd+" "+fileName+" "+call.lenIn);
65 } else 66 } else {
66 throw new RuntimeException("cmd "+call.cmd); 67 logger.error("bad cmd '"+call.cmd+"'");
67 List logInfo = (List)call.args[1]; 68 rpc.write( new RpcException("bad cmd '"+call.cmd+"'") );
68 logger.info("check "+logInfo); 69 return;
70 }
71 List logInfo = (List)call.args[0];
72 //logger.info("check "+logInfo);
69 RpcResult result = OK; 73 RpcResult result = OK;
70 for( Object obj : logInfo ) { 74 for( Object obj : logInfo ) {
71 Map fileInfo = (Map)obj; 75 Map fileInfo = (Map)obj;
72 String name = (String)fileInfo.get("name"); 76 String name = (String)fileInfo.get("name");
73 File f = new File(dir,name); 77 File f = new File(dir,name);
112 } 116 }
113 logs.add( new LogFile(f) ); 117 logs.add( new LogFile(f) );
114 } 118 }
115 if( complete ) { 119 if( complete ) {
116 LoggingIndexWriter.writeIndex(logs,index); 120 LoggingIndexWriter.writeIndex(logs,index);
117 logger.info("write index"); 121 //logger.info("write index");
118 } 122 }
119 } 123 }
120 rpc.write(result); 124 rpc.write(result);
121 } 125 }
122 126
123 void handleZip(RpcServer rpc) throws IOException { 127 void handleZip(RpcServer rpc) throws IOException {
124 File zip = File.createTempFile("luan_",".zip"); 128 File zip = File.createTempFile("luan_",".zip");
125 IoUtils.delete(zip); 129 IoUtils.delete(zip);
126 String cmd = "zip -r " + zip + " " + dir.getName(); 130 String cmd = "zip -r " + zip + " " + dir.getName();
127 logger.info("cmd = "+cmd);
128 synchronized(this) { 131 synchronized(this) {
129 Process proc = Runtime.getRuntime().exec(cmd,null,dir.getParentFile()); 132 Process proc = Runtime.getRuntime().exec(cmd,null,dir.getParentFile());
130 IoUtils.waitFor(proc); 133 IoUtils.waitFor(proc);
131 } 134 }
132 InputStream in = new BufferedInputStream(new FileInputStream(zip)); 135 InputStream in = new BufferedInputStream(new FileInputStream(zip));