Skip to content

Commit

Permalink
Merge pull request #20 from olenagerasimova/19-logging
Browse files Browse the repository at this point in the history
feat: logging via slf4j
  • Loading branch information
dgarus committed Dec 13, 2023
2 parents fed7eb4 + 2b6f82b commit 96396b7
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 48 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -73,12 +73,16 @@
import org.eclipse.jetty.http3.client.HTTP3Client;
import org.eclipse.jetty.http3.client.transport.HttpClientTransportOverHTTP3;
import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* A transporter for HTTP/HTTPS.
*/
final class HttpTransporter extends AbstractTransporter {

static final Logger LOGGER = LoggerFactory.getLogger("http3.plugin");

private final static Set<String> CENTRAL = Set.of(
"repo.maven.apache.org",
"oss.sonatype.org",
Expand Down Expand Up @@ -114,7 +118,7 @@ final class HttpTransporter extends AbstractTransporter {
}
this.checksumExtractors = requireNonNull(checksumExtractors, "checksum extractors must not be null");
try {
System.err.println("\tCustom HttpTransporter repo: " + repository.toString());
LOGGER.debug("Custom HttpTransporter repo: {}", repository);
this.baseUri = new URI(repository.getUrl() + "/").normalize().parseServerAuthority();
if (baseUri.isOpaque()) {
throw new URISyntaxException(repository.getUrl(), "URL must not be opaque");
Expand Down Expand Up @@ -293,24 +297,23 @@ private Pair<InputStream, HttpFields> makeRequest(
}).body(bodyContent).send(listener);
final Response response = listener.get(this.connectTimeout, TimeUnit.MILLISECONDS);
if (response.getStatus() >= 300) {
System.err.printf(
"Request over %s error status %s, method=%s, url=%s%n",
LOGGER.debug(
"{} request error status {}, method={}, url={}",
version, response.getStatus(), method, url
);
throw new HttpResponseException(Integer.toString(response.getStatus()), response);
}
System.err.printf(
"Request over %s done, method=%s, resp status=%s, url=%s%n",
version, method, response.getStatus(), url
LOGGER.debug(
"{} request done, method={}, resp status={}, url={}", version, method, response.getStatus(), url
);
return new ImmutablePair<>(listener.getInputStream(), response.getHeaders());
} catch (Exception ex) {
System.err.printf(
"Request over %s error=%s: %s, method=%s, url=%s%n", version,
LOGGER.debug(
"{} request error={}: {}, method={}, url={}", version,
ex.getClass(), ex.getMessage(), method, url
);
if (version == HttpVersion.HTTP_3 && ex instanceof TimeoutException) {
System.err.printf("Repeat request over HTTP/1.1 method=%s, url=%s%n", method, url);
LOGGER.debug("Repeat via HTTP/1.1 method={}, url={}", method, url);
return this.makeRequest(method, task, bodyContent, this.initOrGetHttpClient());
}
throw new HttpRequestException(ex.getMessage(), request);
Expand Down Expand Up @@ -354,7 +357,7 @@ private HttpVersion httpVersion(final HttpClient client) {
* @throws IllegalAccessException
*/
private void forceLoadHttp3Support() throws NoSuchFieldException, IllegalAccessException {
System.err.println("Custom HttpTransporter.forceLoadHttp3Support() called!");
LOGGER.debug("Custom HttpTransporter.forceLoadHttp3Support() called!");
// Checking http3 support is available (loaded)
PreEncodedHttpField f = new PreEncodedHttpField("Host", "localhost");
for (final HttpVersion v: HttpVersion.values()) {
Expand All @@ -369,47 +372,20 @@ private void forceLoadHttp3Support() throws NoSuchFieldException, IllegalAccessE

// TODO: Force http3 initialization (HACK!)
final ServiceLoader<HttpFieldPreEncoder> load = ServiceLoader.load(HttpFieldPreEncoder.class,PreEncodedHttpField.class.getClassLoader());
/*ServiceLoader<HttpFieldPreEncoder> load = null;
ClassLoader saveCl = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(PreEncodedHttpField.class.getClassLoader());
load = ServiceLoader.load(HttpFieldPreEncoder.class);
}finally {
Thread.currentThread().setContextClassLoader(saveCl);
}*/

/*System.err.println("\tCustom HttpTransporter ServiceLoader=" + load);
Stream<ServiceLoader.Provider<HttpFieldPreEncoder>> providerStream = TypeUtil.serviceProviderStream(load);
System.err.println("\tCustom HttpTransporter Stream<ServiceLoader.Provider<HttpFieldPreEncoder>> = " + providerStream);
ArrayList<Integer> calls = new ArrayList<>();
providerStream.forEach((provider) -> {
try {
calls.add(calls.size());
HttpFieldPreEncoder encoder = (HttpFieldPreEncoder)provider.get();
HttpVersion v = encoder.getHttpVersion();
System.err.println("\tCustom HttpTransporter HttpFieldPreEncoder: encoder=" + encoder + "; ver=" + v);
} catch (RuntimeException | Error var3) {
System.err.println("\tCustom HttpTransporter Error processing encoder: " + provider.get());
}
});
System.err.println("\tCustom HttpTransporter providerStream calls=" + calls.size());*/

HashMap<HttpVersion, HttpFieldPreEncoder> encoders = new HashMap<>();
for (HttpFieldPreEncoder val: load) {
//System.err.println("\tCustom HttpTransporter HttpFieldPreEncoder val=" + val);
LOGGER.debug("Custom HttpTransporter HttpFieldPreEncoder val={}", val);
encoders.put(val.getHttpVersion(), val);
}

Field ff = PreEncodedHttpField.class.getDeclaredField("__encoders");
ff.setAccessible(true);
String fldDescr = ff.get(null).toString();
//System.err.println("\tCustom HttpTransporter __encoders BEFORE: " + fldDescr + "; this=" + this);
@SuppressWarnings("unchecked") EnumMap<HttpVersion, HttpFieldPreEncoder> obj = (EnumMap<HttpVersion, HttpFieldPreEncoder>)ff.get(null);
if (encoders.containsKey(HttpVersion.HTTP_3) && !obj.containsKey(HttpVersion.HTTP_3)) {
//System.err.println("\tCustom HttpTransporter adding to __encoders: " + obj + "; this=" + this);
LOGGER.debug("Custom HttpTransporter adding to __encoders: {}, this = {}", obj, this);
obj.put(HttpVersion.HTTP_3, encoders.get(HttpVersion.HTTP_3));
}
//System.err.println("\tCustom HttpTransporter __encoders AFTER: " + obj + "; this=" + this);
LOGGER.debug("Custom HttpTransporter __encoders AFTER: {}; this={}", obj, this);

// Rechecking http3 support is available (loaded)
f = new PreEncodedHttpField("Host", "localhost");
Expand All @@ -420,7 +396,7 @@ private void forceLoadHttp3Support() throws NoSuchFieldException, IllegalAccessE
} catch (Exception ex) {
len = -1;
}
//System.err.println("\tCustom HttpTransporter PreEncodedHttpField v=" + v + "; len=" + len);
LOGGER.debug("Custom HttpTransporter PreEncodedHttpField v={}; len={}", v, len);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ public Transporter newInstance(RepositorySystemSession session, RemoteRepository
throws NoTransporterException {
requireNonNull(session, "session cannot be null");
requireNonNull(repository, "repository cannot be null");
System.err.println("Custom HttpTransporterFactory created!!!");
HttpTransporter.LOGGER.debug("Custom HttpTransporterFactory created!!!");
try {
return new HttpTransporter(extractors, repository, session);
} catch (Exception e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@ log4j.appender.CONSOLE.layout.ConversionPattern=[%p] %c - %m%n

log4j2.formatMsgNoLookups=True

log4j.logger.http3.plugin=DEBUG
log4j.logger.com.artipie=DEBUG
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,15 @@
*/
public class ArtipieAndLocalPluginHTTP3IT {

private static final Logger LOGGER = LoggerFactory.getLogger(ArtipieAndLocalPluginHTTP3IT.class);
private static final Logger LOGGER = LoggerFactory.getLogger("ArtipieAndLocalPluginHTTP3IT");

private GenericContainer<?> mavenClient;

private GenericContainer<?> artipie;

private final Consumer<OutputFrame> artipieLog =
new Slf4jLogConsumer(LoggerFactory.getLogger(this.getClass())).withPrefix("ARTIPIE");
new Slf4jLogConsumer(LoggerFactory.getLogger("ArtipieAndLocalPluginHTTP3IT"))
.withPrefix("ARTIPIE");

private Network net;

Expand Down Expand Up @@ -74,17 +75,17 @@ void resolvesDependencies() throws IOException, InterruptedException {
this.putClasspathResourceToClient("com/example/maven-http3/maven-settings.xml", "/w/settings.xml");
this.putClasspathResourceToClient("com/example/maven-http3/pom.xml", "/w/pom.xml");
final Container.ExecResult exec = this.mavenClient.execInContainer(
"mvn", "install", "-s", "settings.xml", "-Daether.connector.https.securityMode=insecure"
"mvn", "install", "-X", "-s", "settings.xml", "-Daether.connector.https.securityMode=insecure"
);
String res = String.join("\n", exec.getStdout(), exec.getStderr());
LOGGER.info(res);
MatcherAssert.assertThat("Maven install is not successful", exec.getExitCode() == 0);
MatcherAssert.assertThat(
res,
Matchers.stringContainsInOrder(
"BUILD SUCCESS",
"Request over HTTP/3.0 done, method=GET, resp status=200, url=https://artipie:8091/my-maven-proxy/args4j/args4j/2.33/args4j-2.33.jar",
"Request over HTTP/3.0 done, method=GET, resp status=200, url=https://artipie:8091/my-maven-proxy/org/springframework/spring-web/6.1.0/spring-web-6.1.0.jar"
"HTTP/3.0 request done, method=GET, resp status=200, url=https://artipie:8091/my-maven-proxy/args4j/args4j/2.33/args4j-2.33.jar",
"HTTP/3.0 request done, method=GET, resp status=200, url=https://artipie:8091/my-maven-proxy/org/springframework/spring-web/6.1.0/spring-web-6.1.0.jar",
"BUILD SUCCESS"
)
);
}
Expand Down

2 comments on commit 96396b7

@0pdd
Copy link

@0pdd 0pdd commented on 96396b7 Dec 13, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wasn't able to retrieve PDD puzzles from the code base and submit them to github. If you think that it's a bug on our side, please submit it to yegor256/0pdd:

set -x && set -e && set -o pipefail && cd /tmp/0pdd20231213-14-3aimlu/Z2l0QGdpdGh1Yi5jb206YXJ0aXBpZS9tYXZlbi1yZXNvbHZlci1odHRwMy1wbHVnaW4uZ2l0 && pdd -v -f /tmp/20231213-1206994-jsvjx3 [1]: + set -e + set -o pipefail + cd...

Please, copy and paste this stack trace to GitHub:

UserError
set -x && set -e && set -o pipefail && cd /tmp/0pdd20231213-14-3aimlu/Z2l0QGdpdGh1Yi5jb206YXJ0aXBpZS9tYXZlbi1yZXNvbHZlci1odHRwMy1wbHVnaW4uZ2l0 && pdd -v -f /tmp/20231213-1206994-jsvjx3 [1]:
+ set -e
+ set -o pipefail
+ cd /tmp/0pdd20231213-14-3aimlu/Z2l0QGdpdGh1Yi5jb206YXJ0aXBpZS9tYXZlbi1yZXNvbHZlci1odHRwMy1wbHVnaW4uZ2l0
+ pdd -v -f /tmp/20231213-1206994-jsvjx3

My version is 0.23.2
Ruby version is 3.1.4 at x86_64-linux
Reading from root dir /tmp/0pdd20231213-14-3aimlu/Z2l0QGdpdGh1Yi5jb206YXJ0aXBpZS9tYXZlbi1yZXNvbHZlci1odHRwMy1wbHVnaW4uZ2l0
/tmp/0pdd20231213-14-3aimlu/Z2l0QGdpdGh1Yi5jb206YXJ0aXBpZS9tYXZlbi1yZXNvbHZlci1odHRwMy1wbHVnaW4uZ2l0/mvn-resolver-transport-http3/src/test/resources/commons-cli-1.4.jar is a binary file (53820 bytes)
/tmp/0pdd20231213-14-3aimlu/Z2l0QGdpdGh1Yi5jb206YXJ0aXBpZS9tYXZlbi1yZXNvbHZlci1odHRwMy1wbHVnaW4uZ2l0/mvn-resolver-transport-http3/src/test/resources/ssl/client-store is a binary file (2244 bytes)
/tmp/0pdd20231213-14-3aimlu/Z2l0QGdpdGh1Yi5jb206YXJ0aXBpZS9tYXZlbi1yZXNvbHZlci1odHRwMy1wbHVnaW4uZ2l0/mvn-resolver-transport-http3/src/test/resources/ssl/server-store is a binary file (2246 bytes)
/tmp/0pdd20231213-14-3aimlu/Z2l0QGdpdGh1Yi5jb206YXJ0aXBpZS9tYXZlbi1yZXNvbHZlci1odHRwMy1wbHVnaW4uZ2l0/mvn-resolver-transport-http3/src/test/resources/ssl/server-store-selfsigned is a binary file (2750 bytes)
/tmp/0pdd20231213-14-3aimlu/Z2l0QGdpdGh1Yi5jb206YXJ0aXBpZS9tYXZlbi1yZXNvbHZlci1odHRwMy1wbHVnaW4uZ2l0/testing/mvn-resolver-transport-http/src/test/resources/ssl/client-store is a binary file (2244 bytes)
/tmp/0pdd20231213-14-3aimlu/Z2l0QGdpdGh1Yi5jb206YXJ0aXBpZS9tYXZlbi1yZXNvbHZlci1odHRwMy1wbHVnaW4uZ2l0/testing/mvn-resolver-transport-http/src/test/resources/ssl/server-store is a binary file (2246 bytes)
/tmp/0pdd20231213-14-3aimlu/Z2l0QGdpdGh1Yi5jb206YXJ0aXBpZS9tYXZlbi1yZXNvbHZlci1odHRwMy1wbHVnaW4uZ2l0/testing/mvn-resolver-transport-http/src/test/resources/ssl/server-store-selfsigned is a binary file (2750 bytes)
/tmp/0pdd20231213-14-3aimlu/Z2l0QGdpdGh1Yi5jb206YXJ0aXBpZS9tYXZlbi1yZXNvbHZlci1odHRwMy1wbHVnaW4uZ2l0/testing/mvn-wagon-http-light/src/test/resources/ssl/keystore is a binary file (2246 bytes)
Reading .gitattributes ...
Reading .github/workflows/ci-checks.yml ...
Reading .github/workflows/release.yml ...
Reading .github/workflows/update-copyright-years.yml ...
Reading .gitignore ...
Reading LICENSE.txt ...
Reading README.md ...
Reading mvn-resolver-transport-http3/Dockerfile ...
Reading mvn-resolver-transport-http3/README.md ...
Reading mvn-resolver-transport-http3/pom.xml ...
Reading mvn-resolver-transport-http3/src/main/java/com/artipie/aether/transport/http3/ConnMgrConfig.java ...
Reading mvn-resolver-transport-http3/src/main/java/com/artipie/aether/transport/http3/HttpTransporter.java ...
ERROR: ERROR: mvn-resolver-transport-http3/src/main/java/com/artipie/aether/transport/http3/HttpTransporter.java; PDD::Error at mvn-resolver-transport-http3/src/main/java/com/artipie/aether/transport/http3/HttpTransporter.java:373: TODO found, but puzzle can't be parsed, most probably because TODO is not followed by a puzzle marker, as this page explains: https://github.com/cqfn/pdd#how-to-format
If you can't understand the cause of this issue or you don't know how to fix it, please submit a GitHub issue, we will try to help you: https://github.com/cqfn/pdd/issues. This tool is still in its beta version and we will appreciate your feedback. Here is where you can find more documentation: https://github.com/cqfn/pdd/blob/master/README.md.
Exit code is 1

/app/objects/git_repo.rb:73:in `rescue in block in xml'
/app/objects/git_repo.rb:70:in `block in xml'
/app/vendor/ruby-3.1.4/lib/ruby/3.1.0/tempfile.rb:317:in `open'
/app/objects/git_repo.rb:69:in `xml'
/app/objects/puzzles.rb:41:in `deploy'
/app/objects/jobs/job.rb:38:in `proceed'
/app/objects/jobs/job_starred.rb:32:in `proceed'
/app/objects/jobs/job_recorded.rb:31:in `proceed'
/app/objects/jobs/job_emailed.rb:33:in `proceed'
/app/objects/jobs/job_commiterrors.rb:33:in `proceed'
/app/objects/jobs/job_detached.rb:48:in `exclusive'
/app/objects/jobs/job_detached.rb:36:in `block in proceed'
/app/objects/jobs/job_detached.rb:36:in `fork'
/app/objects/jobs/job_detached.rb:36:in `proceed'
/app/0pdd.rb:531:in `process_request'
/app/0pdd.rb:367:in `block in <top (required)>'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1706:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1706:in `block in compile!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1019:in `block (3 levels) in route!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1037:in `route_eval'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1019:in `block (2 levels) in route!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1068:in `block in process_route'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1066:in `catch'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1066:in `process_route'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1017:in `block in route!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1014:in `each'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1014:in `route!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1138:in `block in dispatch!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1109:in `catch'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1109:in `invoke'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1133:in `dispatch!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:949:in `block in call!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1109:in `catch'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1109:in `invoke'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:949:in `call!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:938:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/deflater.rb:44:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-3.0.6/lib/rack/protection/xss_header.rb:20:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-3.0.6/lib/rack/protection/path_traversal.rb:18:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-3.0.6/lib/rack/protection/json_csrf.rb:28:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-3.0.6/lib/rack/protection/base.rb:53:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-3.0.6/lib/rack/protection/base.rb:53:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-3.0.6/lib/rack/protection/frame_options.rb:33:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/logger.rb:17:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/common_logger.rb:38:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:261:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:254:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/head.rb:12:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/method_override.rb:24:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:219:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:2018:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1576:in `block in call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1792:in `synchronize'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1576:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/handler/webrick.rb:95:in `service'
/app/vendor/bundle/ruby/3.1.0/gems/webrick-1.8.1/lib/webrick/httpserver.rb:140:in `service'
/app/vendor/bundle/ruby/3.1.0/gems/webrick-1.8.1/lib/webrick/httpserver.rb:96:in `run'
/app/vendor/bundle/ruby/3.1.0/gems/webrick-1.8.1/lib/webrick/server.rb:310:in `block in start_thread'

@0pdd
Copy link

@0pdd 0pdd commented on 96396b7 Dec 13, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wasn't able to retrieve PDD puzzles from the code base and submit them to github. If you think that it's a bug on our side, please submit it to yegor256/0pdd:

set -x && set -e && set -o pipefail && cd /tmp/0pdd20231213-14-pvx56q/Z2l0QGdpdGh1Yi5jb206YXJ0aXBpZS9tYXZlbi1yZXNvbHZlci1odHRwMy1wbHVnaW4uZ2l0 && pdd -v -f /tmp/20231213-1208265-2yv608 [1]: + set -e + set -o pipefail + cd...

Please, copy and paste this stack trace to GitHub:

UserError
set -x && set -e && set -o pipefail && cd /tmp/0pdd20231213-14-pvx56q/Z2l0QGdpdGh1Yi5jb206YXJ0aXBpZS9tYXZlbi1yZXNvbHZlci1odHRwMy1wbHVnaW4uZ2l0 && pdd -v -f /tmp/20231213-1208265-2yv608 [1]:
+ set -e
+ set -o pipefail
+ cd /tmp/0pdd20231213-14-pvx56q/Z2l0QGdpdGh1Yi5jb206YXJ0aXBpZS9tYXZlbi1yZXNvbHZlci1odHRwMy1wbHVnaW4uZ2l0
+ pdd -v -f /tmp/20231213-1208265-2yv608

My version is 0.23.2
Ruby version is 3.1.4 at x86_64-linux
Reading from root dir /tmp/0pdd20231213-14-pvx56q/Z2l0QGdpdGh1Yi5jb206YXJ0aXBpZS9tYXZlbi1yZXNvbHZlci1odHRwMy1wbHVnaW4uZ2l0
/tmp/0pdd20231213-14-pvx56q/Z2l0QGdpdGh1Yi5jb206YXJ0aXBpZS9tYXZlbi1yZXNvbHZlci1odHRwMy1wbHVnaW4uZ2l0/mvn-resolver-transport-http3/src/test/resources/commons-cli-1.4.jar is a binary file (53820 bytes)
/tmp/0pdd20231213-14-pvx56q/Z2l0QGdpdGh1Yi5jb206YXJ0aXBpZS9tYXZlbi1yZXNvbHZlci1odHRwMy1wbHVnaW4uZ2l0/mvn-resolver-transport-http3/src/test/resources/ssl/client-store is a binary file (2244 bytes)
/tmp/0pdd20231213-14-pvx56q/Z2l0QGdpdGh1Yi5jb206YXJ0aXBpZS9tYXZlbi1yZXNvbHZlci1odHRwMy1wbHVnaW4uZ2l0/mvn-resolver-transport-http3/src/test/resources/ssl/server-store is a binary file (2246 bytes)
/tmp/0pdd20231213-14-pvx56q/Z2l0QGdpdGh1Yi5jb206YXJ0aXBpZS9tYXZlbi1yZXNvbHZlci1odHRwMy1wbHVnaW4uZ2l0/mvn-resolver-transport-http3/src/test/resources/ssl/server-store-selfsigned is a binary file (2750 bytes)
/tmp/0pdd20231213-14-pvx56q/Z2l0QGdpdGh1Yi5jb206YXJ0aXBpZS9tYXZlbi1yZXNvbHZlci1odHRwMy1wbHVnaW4uZ2l0/testing/mvn-resolver-transport-http/src/test/resources/ssl/client-store is a binary file (2244 bytes)
/tmp/0pdd20231213-14-pvx56q/Z2l0QGdpdGh1Yi5jb206YXJ0aXBpZS9tYXZlbi1yZXNvbHZlci1odHRwMy1wbHVnaW4uZ2l0/testing/mvn-resolver-transport-http/src/test/resources/ssl/server-store is a binary file (2246 bytes)
/tmp/0pdd20231213-14-pvx56q/Z2l0QGdpdGh1Yi5jb206YXJ0aXBpZS9tYXZlbi1yZXNvbHZlci1odHRwMy1wbHVnaW4uZ2l0/testing/mvn-resolver-transport-http/src/test/resources/ssl/server-store-selfsigned is a binary file (2750 bytes)
/tmp/0pdd20231213-14-pvx56q/Z2l0QGdpdGh1Yi5jb206YXJ0aXBpZS9tYXZlbi1yZXNvbHZlci1odHRwMy1wbHVnaW4uZ2l0/testing/mvn-wagon-http-light/src/test/resources/ssl/keystore is a binary file (2246 bytes)
Reading .gitattributes ...
Reading .github/workflows/ci-checks.yml ...
Reading .github/workflows/release.yml ...
Reading .github/workflows/update-copyright-years.yml ...
Reading .gitignore ...
Reading LICENSE.txt ...
Reading README.md ...
Reading mvn-resolver-transport-http3/Dockerfile ...
Reading mvn-resolver-transport-http3/README.md ...
Reading mvn-resolver-transport-http3/pom.xml ...
Reading mvn-resolver-transport-http3/src/main/java/com/artipie/aether/transport/http3/ConnMgrConfig.java ...
Reading mvn-resolver-transport-http3/src/main/java/com/artipie/aether/transport/http3/HttpTransporter.java ...
ERROR: ERROR: mvn-resolver-transport-http3/src/main/java/com/artipie/aether/transport/http3/HttpTransporter.java; PDD::Error at mvn-resolver-transport-http3/src/main/java/com/artipie/aether/transport/http3/HttpTransporter.java:373: TODO found, but puzzle can't be parsed, most probably because TODO is not followed by a puzzle marker, as this page explains: https://github.com/cqfn/pdd#how-to-format
If you can't understand the cause of this issue or you don't know how to fix it, please submit a GitHub issue, we will try to help you: https://github.com/cqfn/pdd/issues. This tool is still in its beta version and we will appreciate your feedback. Here is where you can find more documentation: https://github.com/cqfn/pdd/blob/master/README.md.
Exit code is 1

/app/objects/git_repo.rb:73:in `rescue in block in xml'
/app/objects/git_repo.rb:70:in `block in xml'
/app/vendor/ruby-3.1.4/lib/ruby/3.1.0/tempfile.rb:317:in `open'
/app/objects/git_repo.rb:69:in `xml'
/app/objects/puzzles.rb:41:in `deploy'
/app/objects/jobs/job.rb:38:in `proceed'
/app/objects/jobs/job_starred.rb:32:in `proceed'
/app/objects/jobs/job_recorded.rb:31:in `proceed'
/app/objects/jobs/job_emailed.rb:33:in `proceed'
/app/objects/jobs/job_commiterrors.rb:33:in `proceed'
/app/objects/jobs/job_detached.rb:48:in `exclusive'
/app/objects/jobs/job_detached.rb:36:in `block in proceed'
/app/objects/jobs/job_detached.rb:36:in `fork'
/app/objects/jobs/job_detached.rb:36:in `proceed'
/app/0pdd.rb:531:in `process_request'
/app/0pdd.rb:367:in `block in <top (required)>'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1706:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1706:in `block in compile!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1019:in `block (3 levels) in route!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1037:in `route_eval'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1019:in `block (2 levels) in route!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1068:in `block in process_route'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1066:in `catch'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1066:in `process_route'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1017:in `block in route!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1014:in `each'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1014:in `route!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1138:in `block in dispatch!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1109:in `catch'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1109:in `invoke'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1133:in `dispatch!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:949:in `block in call!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1109:in `catch'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1109:in `invoke'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:949:in `call!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:938:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/deflater.rb:44:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-3.0.6/lib/rack/protection/xss_header.rb:20:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-3.0.6/lib/rack/protection/path_traversal.rb:18:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-3.0.6/lib/rack/protection/json_csrf.rb:28:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-3.0.6/lib/rack/protection/base.rb:53:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-3.0.6/lib/rack/protection/base.rb:53:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-3.0.6/lib/rack/protection/frame_options.rb:33:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/logger.rb:17:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/common_logger.rb:38:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:261:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:254:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/head.rb:12:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/method_override.rb:24:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:219:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:2018:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1576:in `block in call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1792:in `synchronize'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1576:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/handler/webrick.rb:95:in `service'
/app/vendor/bundle/ruby/3.1.0/gems/webrick-1.8.1/lib/webrick/httpserver.rb:140:in `service'
/app/vendor/bundle/ruby/3.1.0/gems/webrick-1.8.1/lib/webrick/httpserver.rb:96:in `run'
/app/vendor/bundle/ruby/3.1.0/gems/webrick-1.8.1/lib/webrick/server.rb:310:in `block in start_thread'

Please sign in to comment.