Skip to content

Commit dbfe7aa

Browse files
committed
Merge remote-tracking branch 'GGCE/8.7-master' into 8.7-master
2 parents 7c9e79d + 24caaf1 commit dbfe7aa

File tree

202 files changed

+2383
-1948
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

202 files changed

+2383
-1948
lines changed

modules/core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@
125125
<dependency>
126126
<groupId>org.mockito</groupId>
127127
<artifactId>mockito-all</artifactId>
128-
<version>1.9.5</version>
128+
<version>${mockito.version}</version>
129129
<scope>test</scope>
130130
</dependency>
131131

modules/core/src/main/java/org/apache/ignite/internal/IgniteVersionUtils.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public class IgniteVersionUtils {
3232
public static final IgniteProductVersion VER;
3333

3434
/** UTC build date formatter. */
35-
public static final SimpleDateFormat BUILD_TSTAMP_DATE_FORMATTER;
35+
private static final SimpleDateFormat BUILD_TSTAMP_DATE_FORMATTER;
3636

3737
/** Formatted build date. */
3838
public static final String BUILD_TSTAMP_STR;
@@ -74,7 +74,7 @@ public class IgniteVersionUtils {
7474

7575
BUILD_TSTAMP_DATE_FORMATTER.setTimeZone(TimeZone.getTimeZone("UTC"));
7676

77-
BUILD_TSTAMP_STR = BUILD_TSTAMP_DATE_FORMATTER.format(new Date(BUILD_TSTAMP * 1000));
77+
BUILD_TSTAMP_STR = formatBuildTimeStamp(BUILD_TSTAMP * 1000);
7878

7979
COPYRIGHT = BUILD_TSTAMP_STR.substring(0, 4) + " Copyright(C) Apache Software Foundation";
8080

@@ -89,6 +89,17 @@ public class IgniteVersionUtils {
8989
VER = IgniteProductVersion.fromString(VER_STR + '-' + BUILD_TSTAMP + '-' + REV_HASH_STR);
9090
}
9191

92+
/**
93+
* Builds string date representation in "yyyyMMdd" format.
94+
* "synchronized" because it uses {@link SimpleDateFormat} which is not threadsafe.
95+
*
96+
* @param ts Timestamp.
97+
* @return Timestamp date in UTC timezone.
98+
*/
99+
public static synchronized String formatBuildTimeStamp(long ts) {
100+
return BUILD_TSTAMP_DATE_FORMATTER.format(new Date(ts));
101+
}
102+
92103
/**
93104
* Private constructor.
94105
*/

modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,18 @@ public class CommandHandler {
6464
private final CommandLogger commandLogger= new CommandLogger();
6565

6666
/** JULs logger. */
67-
private final Logger logger = setupJavaLogger();
67+
private static final Logger staticLogger = setupJavaLogger();
6868

69-
private Logger setupJavaLogger() {
69+
/** */
70+
private final Logger logger;
71+
72+
/**
73+
* @return Instance of default Java logger.
74+
*/
75+
private static Logger setupJavaLogger() {
7076
Logger result;
7177

72-
result = Logger.getLogger(getClass().getName());
78+
result = Logger.getLogger(CommandHandler.class.getName());
7379
result.setLevel(Level.INFO);
7480

7581
// Adding logging to file.
@@ -146,6 +152,20 @@ public static void main(String[] args) {
146152
System.exit(hnd.execute(Arrays.asList(args)));
147153
}
148154

155+
/**
156+
*
157+
*/
158+
public CommandHandler() {
159+
logger = staticLogger;
160+
}
161+
162+
/**
163+
* @param logger Logger to use.
164+
*/
165+
public CommandHandler(Logger logger) {
166+
this.logger = logger;
167+
}
168+
149169
/**
150170
* Parse and execute command.
151171
*

modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/CacheContention.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ public int maxPrint() {
115115
CommandLogger.printErrors(res.exceptions(), "Contention check failed on nodes:", logger);
116116

117117
for (ContentionInfo info : res.getInfos())
118-
info.print();
118+
info.print(logger);
119119

120120
return res;
121121
}

modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/CacheDistribution.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ public Set<String> getUserAttributes() {
121121

122122
CommandLogger.printErrors(res.exceptions(), "Cache distrubution task failed on nodes:", logger);
123123

124-
res.print(System.out);
124+
res.print(System.out::println);
125125

126126
return res;
127127
}

modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/IdleVerify.java

Lines changed: 47 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.util.Map;
2424
import java.util.Set;
2525
import java.util.logging.Logger;
26+
import java.util.function.Consumer;
2627
import java.util.regex.Pattern;
2728
import java.util.regex.PatternSyntaxException;
2829
import org.apache.ignite.IgniteException;
@@ -40,6 +41,7 @@
4041
import org.apache.ignite.internal.processors.cache.verify.PartitionKey;
4142
import org.apache.ignite.internal.processors.cache.verify.VerifyBackupPartitionsTaskV2;
4243
import org.apache.ignite.internal.util.typedef.F;
44+
import org.apache.ignite.internal.util.typedef.internal.SB;
4345
import org.apache.ignite.internal.visor.verify.CacheFilterEnum;
4446
import org.apache.ignite.internal.visor.verify.VisorIdleVerifyDumpTask;
4547
import org.apache.ignite.internal.visor.verify.VisorIdleVerifyDumpTaskArg;
@@ -203,7 +205,7 @@ public boolean isSkipZeros() {
203205
if (args.dump())
204206
cacheIdleVerifyDump(client, clientCfg, logger);
205207
else if (idleVerifyV2)
206-
cacheIdleVerifyV2(client, clientCfg);
208+
cacheIdleVerifyV2(client, clientCfg, logger);
207209
else
208210
legacyCacheIdleVerify(client, clientCfg, logger);
209211
}
@@ -318,6 +320,8 @@ private void cacheIdleVerifyDump(
318320

319321
String path = executeTask(client, VisorIdleVerifyDumpTask.class, arg, clientCfg);
320322

323+
logParsedArgs(arg, logger::info);
324+
321325
logger.info("VisorIdleVerifyDumpTask successfully written output to '" + path + "'");
322326
}
323327

@@ -328,17 +332,45 @@ private void cacheIdleVerifyDump(
328332
*/
329333
private void cacheIdleVerifyV2(
330334
GridClient client,
331-
GridClientConfiguration clientCfg
335+
GridClientConfiguration clientCfg,
336+
Logger log
332337
) throws GridClientException {
333-
IdleVerifyResultV2 res = executeTask(
334-
client,
335-
VisorIdleVerifyTaskV2.class,
336-
new VisorIdleVerifyTaskArg(args.caches(), args.excludeCaches(), args.idleCheckCrc()),
337-
clientCfg);
338+
VisorIdleVerifyTaskArg taskArg = new VisorIdleVerifyTaskArg(
339+
args.caches(),
340+
args.excludeCaches(),
341+
args.isSkipZeros(),
342+
args.getCacheFilterEnum(),
343+
args.idleCheckCrc()
344+
);
345+
346+
IdleVerifyResultV2 res = executeTask(client, VisorIdleVerifyTaskV2.class, taskArg, clientCfg);
347+
348+
logParsedArgs(taskArg, log::info);
338349

339-
res.print(System.out::print);
350+
res.print(log::info);
340351
}
341352

353+
/**
354+
* Passes idle_verify parsed arguments to given log consumer.
355+
*
356+
* @param args idle_verify arguments.
357+
* @param logConsumer Logger.
358+
*/
359+
public static void logParsedArgs(VisorIdleVerifyTaskArg args, Consumer<String> logConsumer) {
360+
SB options = new SB("idle_verify task was executed with the following args: ");
361+
362+
options
363+
.a("caches=[")
364+
.a(args.caches() == null ? "" : String.join(", ", args.caches()))
365+
.a("], excluded=[")
366+
.a(args.excludeCaches() == null ? "" : String.join(", ", args.excludeCaches()))
367+
.a("]")
368+
.a(", cacheFilter=[")
369+
.a(args.cacheFilterEnum().toString())
370+
.a("]\n");
371+
372+
logConsumer.accept(options.toString());
373+
}
342374

343375
/**
344376
* @param client Client.
@@ -352,7 +384,13 @@ private void legacyCacheIdleVerify(
352384
VisorIdleVerifyTaskResult res = executeTask(
353385
client,
354386
VisorIdleVerifyTask.class,
355-
new VisorIdleVerifyTaskArg(args.caches(), args.excludeCaches(), args.idleCheckCrc()),
387+
new VisorIdleVerifyTaskArg(
388+
args.caches(),
389+
args.excludeCaches(),
390+
args.isSkipZeros(),
391+
args.getCacheFilterEnum(),
392+
args.idleCheckCrc()
393+
),
356394
clientCfg);
357395

358396
Map<PartitionKey, List<PartitionHashRecord>> conflicts = res.getConflicts();

modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/distribution/CacheDistributionTaskResult.java

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@
1919
import java.io.IOException;
2020
import java.io.ObjectInput;
2121
import java.io.ObjectOutput;
22-
import java.io.PrintStream;
2322
import java.util.ArrayList;
2423
import java.util.Collection;
2524
import java.util.List;
2625
import java.util.Map;
2726
import java.util.UUID;
27+
import java.util.function.Consumer;
2828
import org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtPartitionState;
2929
import org.apache.ignite.internal.util.typedef.internal.S;
3030
import org.apache.ignite.internal.util.typedef.internal.U;
@@ -95,9 +95,9 @@ public Map<UUID, Exception> exceptions() {
9595
/**
9696
* Print collect information on the distribution of partitions.
9797
*
98-
* @param out Print stream.
98+
* @param printer Line printer.
9999
*/
100-
public void print(PrintStream out) {
100+
public void print(Consumer<String> printer) {
101101
if (nodeResList.isEmpty())
102102
return;
103103

@@ -134,18 +134,19 @@ public void print(PrintStream out) {
134134
userAttrsName.append(userAttribute);
135135
}
136136
}
137-
out.println("[groupId,partition,nodeId,primary,state,updateCounter,partitionSize,nodeAddresses" + userAttrsName + "]");
137+
138+
printer.accept("[groupId,partition,nodeId,primary,state,updateCounter,partitionSize,nodeAddresses" + userAttrsName + "]");
138139

139140
int oldGrpId = 0;
140141

141142
for (Row row : rows) {
142143
if (oldGrpId != row.grpId) {
143-
out.println("[next group: id=" + row.grpId + ", name=" + row.grpName + ']');
144+
printer.accept("[next group: id=" + row.grpId + ", name=" + row.grpName + ']');
144145

145146
oldGrpId = row.getGroupId();
146147
}
147148

148-
row.print(out);
149+
row.print(printer);
149150
}
150151
}
151152

@@ -307,39 +308,41 @@ public void setUserAttributes(Map<String, String> userAttrs) {
307308
}
308309

309310
/** */
310-
public void print(PrintStream out) {
311-
out.print(grpId);
312-
out.print(',');
311+
public void print(Consumer<String> printer) {
312+
StringBuilder sb = new StringBuilder();
313+
314+
sb.append(grpId);
315+
sb.append(',');
313316

314-
out.print(partId);
315-
out.print(',');
317+
sb.append(partId);
318+
sb.append(',');
316319

317-
out.print(U.id8(getNodeId()));
318-
out.print(',');
320+
sb.append(U.id8(getNodeId()));
321+
sb.append(',');
319322

320-
out.print(primary ? "P" : "B");
321-
out.print(',');
323+
sb.append(primary ? "P" : "B");
324+
sb.append(',');
322325

323-
out.print(state);
324-
out.print(',');
326+
sb.append(state);
327+
sb.append(',');
325328

326-
out.print(updateCntr);
327-
out.print(',');
329+
sb.append(updateCntr);
330+
sb.append(',');
328331

329-
out.print(size);
330-
out.print(',');
332+
sb.append(size);
333+
sb.append(',');
331334

332-
out.print(addrs);
335+
sb.append(addrs);
333336

334337
if (userAttrs != null) {
335338
for (String userAttribute : userAttrs.values()) {
336-
out.print(',');
339+
sb.append(',');
337340
if (userAttribute != null)
338-
out.print(userAttribute);
341+
sb.append(userAttribute);
339342
}
340343
}
341344

342-
out.println();
345+
printer.accept(sb.toString());
343346
}
344347
}
345348
}

modules/core/src/main/java/org/apache/ignite/internal/commandline/diagnostic/DiagnosticCommand.java

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,14 @@
1616

1717
package org.apache.ignite.internal.commandline.diagnostic;
1818

19+
import java.util.Arrays;
1920
import java.util.logging.Logger;
2021
import org.apache.ignite.internal.client.GridClientConfiguration;
2122
import org.apache.ignite.internal.commandline.Command;
2223
import org.apache.ignite.internal.commandline.CommandArgIterator;
2324
import org.apache.ignite.internal.commandline.CommandLogger;
2425

26+
import static org.apache.ignite.internal.commandline.Command.usage;
2527
import static org.apache.ignite.internal.commandline.CommandHandler.UTILITY_NAME;
2628
import static org.apache.ignite.internal.commandline.CommandList.DIAGNOSTIC;
2729
import static org.apache.ignite.internal.commandline.CommandLogger.join;
@@ -32,14 +34,10 @@
3234
*
3335
*/
3436
public class DiagnosticCommand implements Command<DiagnosticSubCommand> {
35-
/**
36-
*
37-
*/
37+
/** */
3838
private DiagnosticSubCommand subcommand;
3939

40-
/**
41-
*
42-
*/
40+
/** */
4341
private Logger logger;
4442

4543
/** {@inheritDoc} */
@@ -101,20 +99,28 @@ public class DiagnosticCommand implements Command<DiagnosticSubCommand> {
10199

102100
/** {@inheritDoc} */
103101
@Override public String name() {
104-
return "Diagnostic command";
102+
return "diagnostic";
105103
}
106104

107105
/** {@inheritDoc} */
108106
@Override public void printUsage() {
109-
logger.info("View diagnostic information in a cluster. For more details type:");
110-
logger.info(join(" ", UTILITY_NAME, DIAGNOSTIC, HELP));
111-
logger.info("\n");
107+
usage("View diagnostic information in a cluster:", DIAGNOSTIC);
112108
}
113109

114110
/**
115-
*
111+
* Print diagnostic command help.
116112
*/
117113
private void printDiagnosticHelp() {
118-
logger.info(join(" ", UTILITY_NAME, DIAGNOSTIC, PAGE_LOCKS + " - dump page locks info."));
114+
CommandLogger.logWithIndent(join(" ", UTILITY_NAME, DIAGNOSTIC, PAGE_LOCKS + " - dump page locks info."));
115+
116+
CommandLogger.nl();
117+
118+
CommandLogger.logWithIndent("Subcommands:");
119+
120+
Arrays.stream(DiagnosticSubCommand.values()).forEach(c -> {
121+
if (c.subcommand() != null) c.subcommand().printUsage();
122+
});
123+
124+
CommandLogger.nl();
119125
}
120126
}

0 commit comments

Comments
 (0)