Project

General

Profile

« Previous | Next » 

Revision 49044

do not close the client too early

View differences:

modules/dnet-openaireplus-mapping-utils/trunk/src/main/java/eu/dnetlib/data/index/CloudIndexClientFactory.java
14 14

  
15 15
	public static CloudIndexClient newIndexClient(final String baseURL, final String collection, final boolean parallelUpdates)
16 16
			throws CloudIndexClientException {
17
		try {
18
			final CloudSolrClient client = new CloudSolrClient.Builder().withZkHost(baseURL).build();
17 19

  
18
		try(final CloudSolrClient solrServer = new CloudSolrClient.Builder().withZkHost(baseURL).build()) {
19

  
20 20
			log.info(String.format("Initializing solr server (%s) ...", baseURL));
21 21

  
22
			solrServer.connect();
22
			client.connect();
23 23

  
24
			solrServer.setParallelUpdates(parallelUpdates);
25
			solrServer.setDefaultCollection(collection);
24
			client.setParallelUpdates(parallelUpdates);
25
			client.setDefaultCollection(collection);
26 26

  
27
			final SolrPingResponse rsp = solrServer.ping();
27
			final SolrPingResponse rsp = client.ping();
28 28
			if (rsp.getStatus() != 0) {
29 29
				log.error("Invalid connection to solr Server (status = 0)");
30 30
				throw new CloudIndexClientException("Invalid connection to solr Server (status = 0)");
31 31
			}
32
			return new CloudIndexClient(solrServer);
32
			return new CloudIndexClient(client);
33 33
		} catch (Throwable e) {
34 34
			log.error("The initialization of indexClient is FAILED", e);
35 35
			throw new CloudIndexClientException("The initialization of indexClient is FAILED", e);
modules/dnet-openaireplus-mapping-utils/trunk/src/main/java/eu/dnetlib/data/index/CloudIndexClient.java
1 1
package eu.dnetlib.data.index;
2 2

  
3
import java.io.Closeable;
3 4
import java.io.IOException;
4 5
import java.text.SimpleDateFormat;
5 6
import java.util.Date;
......
20 21
/**
21 22
 * Created by michele on 11/11/15.
22 23
 */
23
public class CloudIndexClient {
24
public class CloudIndexClient implements Closeable {
24 25

  
25 26
	private static final Log log = LogFactory.getLog(CloudIndexClient.class);
26 27
	private static final String INDEX_RECORD_RESULT_FIELD = "dnetResult";
27 28

  
28
	private final CloudSolrClient solrServer;
29
	private final CloudSolrClient solrClient;
29 30

  
30 31
	protected CloudIndexClient(final CloudSolrClient solrServer) {
31
		this.solrServer = solrServer;
32
		this.solrClient = solrServer;
32 33
	}
33 34

  
34 35
	public int feed(final String record, final String indexDsId, final UnaryFunction<String, String> toIndexRecord) throws CloudIndexClientException {
......
52 53

  
53 54
	public int feed(final SolrInputDocument document, final boolean commit) throws CloudIndexClientException {
54 55
		try {
55
			final UpdateResponse res = solrServer.add(document);
56
			final UpdateResponse res = solrClient.add(document);
56 57
			log.debug("feed time for single records, elapsed time: " + HumanTime.exactly(res.getElapsedTime()));
57 58
			if (res.getStatus() != 0) { throw new CloudIndexClientException("bad status: " + res.getStatus()); }
58 59
			if (commit) {
59
				solrServer.commit();
60
				solrClient.commit();
60 61
			}
61 62
			return res.getStatus();
62 63
		} catch (final Throwable e) {
......
77 78
				}
78 79
				return;
79 80
			}
80
			final UpdateResponse res = solrServer.add(docs);
81
			final UpdateResponse res = solrClient.add(docs);
81 82

  
82 83
			log.debug("feed time for " + docs.size() + " records, elapsed tipe: : " + HumanTime.exactly(res.getElapsedTime()));
83 84

  
84 85
			if (commit) {
85
				solrServer.commit();
86
				solrClient.commit();
86 87
			}
87 88
			if (callback != null) {
88 89
				callback.doAfterFeeding(res);
......
122 123

  
123 124
	public int remove(final String id, final boolean commit) throws CloudIndexClientException {
124 125
		try {
125
			final UpdateResponse res = solrServer.deleteByQuery("objidentifier:\"" + id + "\"");
126
			final UpdateResponse res = solrClient.deleteByQuery("objidentifier:\"" + id + "\"");
126 127
			if (commit) {
127
				solrServer.commit();
128
				solrClient.commit();
128 129
			}
129 130
			return res.getResponse().size();
130 131
		} catch (final Throwable e) {
......
144 145
			if(rows != null && rows >= 0) {
145 146
				solrQuery.setRows(rows);
146 147
			}
147
			return solrServer.query(solrQuery);
148
			return solrClient.query(solrQuery);
148 149
		} catch (final Throwable e) {
149 150
			throw new CloudIndexClientException("Error searching documents", e);
150 151
		}
151 152
	}
152 153

  
153 154
	public void close() throws IOException {
154
		if (solrServer != null) {
155
			solrServer.close();
155
		if (solrClient != null) {
156
			solrClient.close();
156 157
		}
157 158
	}
158 159

  

Also available in: Unified diff