mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[maven] - make indicator pull-based instead of push - for IDEA-266222
GitOrigin-RevId: 3873b485c4eef703b4919b59dd80de51b35cb49c
This commit is contained in:
committed by
intellij-monorepo-bot
parent
241288d3f7
commit
93fedd74a4
+4
-1
@@ -25,6 +25,7 @@ import java.io.File;
|
||||
import java.rmi.Remote;
|
||||
import java.rmi.RemoteException;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public interface MavenServerIndexer extends Remote {
|
||||
@@ -44,7 +45,9 @@ public interface MavenServerIndexer extends Remote {
|
||||
MavenServerIndexerException,
|
||||
MavenServerProcessCanceledException;
|
||||
|
||||
void processArtifacts(int indexId, MavenServerIndicesProcessor processor, MavenToken token) throws RemoteException, MavenServerIndexerException;
|
||||
@Nullable
|
||||
//null means no artifacts lasts
|
||||
List<IndexedMavenId> processArtifacts(int indexId, int startFrom, MavenToken token) throws RemoteException, MavenServerIndexerException;
|
||||
|
||||
IndexedMavenId addArtifact(int indexId, File artifactFile, MavenToken token) throws RemoteException, MavenServerIndexerException;
|
||||
|
||||
|
||||
+11
-10
@@ -130,9 +130,9 @@ public final class Maven2ServerIndexerImpl extends MavenRemoteObject implements
|
||||
|
||||
@Override
|
||||
public void updateIndex(int id, MavenServerSettings settings, MavenServerProgressIndicator indicator, MavenToken token) throws
|
||||
MavenServerIndexerException,
|
||||
MavenServerProcessCanceledException,
|
||||
RemoteException {
|
||||
MavenServerIndexerException,
|
||||
MavenServerProcessCanceledException,
|
||||
RemoteException {
|
||||
MavenServerUtil.checkToken(token);
|
||||
IndexingContext index = getIndex(id);
|
||||
|
||||
@@ -199,7 +199,7 @@ public final class Maven2ServerIndexerImpl extends MavenRemoteObject implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processArtifacts(int indexId, MavenServerIndicesProcessor processor, MavenToken token) throws MavenServerIndexerException {
|
||||
public List<IndexedMavenId> processArtifacts(int indexId, int startFrom, MavenToken token) throws MavenServerIndexerException {
|
||||
MavenServerUtil.checkToken(token);
|
||||
try {
|
||||
final int CHUNK_SIZE = 10000;
|
||||
@@ -208,7 +208,7 @@ public final class Maven2ServerIndexerImpl extends MavenRemoteObject implements
|
||||
int total = r.numDocs();
|
||||
|
||||
List<IndexedMavenId> result = new ArrayList<IndexedMavenId>(Math.min(CHUNK_SIZE, total));
|
||||
for (int i = 0; i < total; i++) {
|
||||
for (int i = startFrom; i < total; i++) {
|
||||
if (r.isDeleted(i)) continue;
|
||||
|
||||
Document doc = r.document(i);
|
||||
@@ -226,13 +226,14 @@ public final class Maven2ServerIndexerImpl extends MavenRemoteObject implements
|
||||
result.add(new IndexedMavenId(groupId, artifactId, version, packaging, description));
|
||||
|
||||
if (result.size() == CHUNK_SIZE) {
|
||||
processor.processArtifacts(result);
|
||||
result.clear();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
if (!result.isEmpty()) {
|
||||
processor.processArtifacts(result);
|
||||
if (result.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
else {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
catch (Exception e) {
|
||||
|
||||
+7
-8
@@ -214,8 +214,7 @@ public abstract class Maven3ServerIndexerImpl extends MavenRemoteObject implemen
|
||||
|
||||
|
||||
@Override
|
||||
public void processArtifacts(int indexId, MavenServerIndicesProcessor processor, MavenToken token)
|
||||
throws MavenServerIndexerException {
|
||||
public List<IndexedMavenId> processArtifacts(int indexId, int startFrom, MavenToken token) throws MavenServerIndexerException {
|
||||
MavenServerUtil.checkToken(token);
|
||||
try {
|
||||
final int CHUNK_SIZE = 10000;
|
||||
@@ -224,7 +223,7 @@ public abstract class Maven3ServerIndexerImpl extends MavenRemoteObject implemen
|
||||
int total = r.numDocs();
|
||||
|
||||
List<IndexedMavenId> result = new ArrayList<IndexedMavenId>(Math.min(CHUNK_SIZE, total));
|
||||
for (int i = 0; i < total; i++) {
|
||||
for (int i = startFrom; i < total; i++) {
|
||||
if (r.isDeleted(i)) continue;
|
||||
|
||||
Document doc = r.document(i);
|
||||
@@ -242,13 +241,13 @@ public abstract class Maven3ServerIndexerImpl extends MavenRemoteObject implemen
|
||||
result.add(new IndexedMavenId(groupId, artifactId, version, packaging, description));
|
||||
|
||||
if (result.size() == CHUNK_SIZE) {
|
||||
processor.processArtifacts(result);
|
||||
result.clear();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
if (!result.isEmpty()) {
|
||||
processor.processArtifacts(result);
|
||||
if (result.isEmpty()) {
|
||||
return null;
|
||||
} else {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
catch (Exception e) {
|
||||
|
||||
+2
-1
@@ -130,7 +130,8 @@ class DummyIndexer : MavenServerIndexer {
|
||||
override fun updateIndex(id: Int, settings: MavenServerSettings?, indicator: MavenServerProgressIndicator?, token: MavenToken?) {
|
||||
}
|
||||
|
||||
override fun processArtifacts(indexId: Int, processor: MavenServerIndicesProcessor?, token: MavenToken?) {
|
||||
override fun processArtifacts(indexId: Int, startFrom: Int, token: MavenToken?): List<IndexedMavenId>? {
|
||||
return null
|
||||
}
|
||||
|
||||
override fun addArtifact(indexId: Int, artifactFile: File?, token: MavenToken?): IndexedMavenId {
|
||||
|
||||
+16
-6
@@ -19,6 +19,7 @@ import java.io.File;
|
||||
import java.rmi.RemoteException;
|
||||
import java.rmi.server.UnicastRemoteObject;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public abstract class MavenIndexerWrapper extends MavenRemoteObjectWrapper<MavenServerIndexer> {
|
||||
@@ -120,14 +121,23 @@ public abstract class MavenIndexerWrapper extends MavenRemoteObjectWrapper<Maven
|
||||
|
||||
public void processArtifacts(final int indexId, final MavenIndicesProcessor processor) throws MavenServerIndexerException {
|
||||
perform(() -> {
|
||||
MavenServerIndicesProcessor processorWrapper = wrapAndExport(processor);
|
||||
try {
|
||||
getOrCreateWrappee().processArtifacts(getRemoteId(indexId), processorWrapper, ourToken);
|
||||
int start = 0;
|
||||
List<IndexedMavenId> list;
|
||||
do {
|
||||
list = getOrCreateWrappee().processArtifacts(getRemoteId(indexId), start, ourToken);
|
||||
if (list != null) {
|
||||
processor.processArtifacts(list);
|
||||
start += list.size();
|
||||
}
|
||||
}
|
||||
while (list != null);
|
||||
return null;
|
||||
} catch (Exception e){
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
finally {
|
||||
UnicastRemoteObject.unexportObject(processorWrapper, true);
|
||||
}
|
||||
return null;
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user