From 12d73538a092a36f6f95f234ee6c766fde0b67dd Mon Sep 17 00:00:00 2001 From: jean-philippe bempel Date: Mon, 26 May 2025 16:44:55 +0200 Subject: [PATCH] Fix SymDB upload size check First compress the upload and then check the compressed size against the maximum upload size. If above the limit, split by jar or scope and try again compressed Add it.unimi.dsi.fastutil as third-party libraries --- .../com/datadog/debugger/sink/SymbolSink.java | 86 +++++++------------ .../main/resources/third_party_libraries.json | 2 +- .../datadog/debugger/sink/SymbolSinkTest.java | 26 ++++++ 3 files changed, 57 insertions(+), 57 deletions(-) diff --git a/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/sink/SymbolSink.java b/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/sink/SymbolSink.java index f7a7ae3f89b..9e3122597c8 100644 --- a/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/sink/SymbolSink.java +++ b/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/sink/SymbolSink.java @@ -105,16 +105,37 @@ public void flush() { String json = SERVICE_VERSION_ADAPTER.toJson( new ServiceVersion(serviceName, env, version, "JAVA", scopesToSerialize)); - if (json.length() > maxPayloadSize) { - LOGGER.debug( - "Upload split is required for {} scopes: {}/{}", - scopesToSerialize.size(), - json.length(), - maxPayloadSize); - splitAndSend(scopesToSerialize); + updateStats(scopesToSerialize, json); + doUpload(scopesToSerialize, json); + } + + private void doUpload(List scopesToSerialize, String json) { + byte[] jsonBytes = json.getBytes(StandardCharsets.UTF_8); + byte[] payload = null; + if (isCompressed) { + payload = compressPayload(jsonBytes); + } + if (payload == null) { + if (json.length() > maxPayloadSize) { + LOGGER.warn("Payload is too big: {}/{}", json.length(), maxPayloadSize); + splitAndSend(scopesToSerialize); + return; + } + symbolUploader.uploadAsMultipart( + "", + event, + new BatchUploader.MultiPartContent(jsonBytes, "file", "file.json", APPLICATION_JSON)); } else { - LOGGER.debug("Sending {} jar scopes size={}", scopesToSerialize.size(), json.length()); - doUpload(scopesToSerialize, json); + if (payload.length > maxPayloadSize) { + LOGGER.warn("Compressed payload is too big: {}/{}", payload.length, maxPayloadSize); + splitAndSend(scopesToSerialize); + return; + } + LOGGER.debug("Sending {} jar scopes size={}", scopesToSerialize.size(), payload.length); + symbolUploader.uploadAsMultipart( + "", + event, + new BatchUploader.MultiPartContent(payload, "file", "file.gz", APPLICATION_GZIP)); } } @@ -146,16 +167,6 @@ private void splitAndSend(List scopesToSerialize) { SERVICE_VERSION_ADAPTER.toJson( new ServiceVersion( serviceName, env, version, "JAVA", Collections.singletonList(scope))); - if (json.length() > maxPayloadSize) { - // this jar scope is still too big, split it by classes - LOGGER.debug( - "Upload split is required for jar scope {}: {}/{}", - scope.getName(), - json.length(), - maxPayloadSize); - splitAndSend(Collections.singletonList(scope)); - continue; - } LOGGER.debug("Sending {} jar scope size={}", scope.getName(), json.length()); doUpload(Collections.singletonList(scope), json); } @@ -168,22 +179,10 @@ private void splitAndSend(List scopesToSerialize) { String jsonFirstHalf = SERVICE_VERSION_ADAPTER.toJson( new ServiceVersion(serviceName, env, version, "JAVA", firstHalf)); - if (jsonFirstHalf.length() > maxPayloadSize) { - LOGGER.warn( - "Cannot split jar scope list in 2, first half is too big: {}", - jsonFirstHalf.length()); - return; - } doUpload(firstHalf, jsonFirstHalf); String jsonSecondHalf = SERVICE_VERSION_ADAPTER.toJson( new ServiceVersion(serviceName, env, version, "JAVA", secondHalf)); - if (jsonSecondHalf.length() > maxPayloadSize) { - LOGGER.warn( - "Cannot split jar scope list in 2, second half is too big: {}", - jsonSecondHalf.length()); - return; - } doUpload(secondHalf, jsonSecondHalf); } } else { @@ -213,31 +212,6 @@ private void splitAndSend(List scopesToSerialize) { } } - private void doUpload(List scopes, String json) { - updateStats(scopes, json); - byte[] jsonBytes = json.getBytes(StandardCharsets.UTF_8); - byte[] payload = null; - if (isCompressed) { - payload = compressPayload(jsonBytes); - } - if (payload == null) { - if (jsonBytes.length > maxPayloadSize) { - LOGGER.warn("Compressed payload is too big: {}/{}", payload.length, maxPayloadSize); - splitAndSend(scopes); - return; - } - symbolUploader.uploadAsMultipart( - "", - event, - new BatchUploader.MultiPartContent(jsonBytes, "file", "file.json", APPLICATION_JSON)); - } else { - symbolUploader.uploadAsMultipart( - "", - event, - new BatchUploader.MultiPartContent(payload, "file", "file.gz", APPLICATION_GZIP)); - } - } - private static Scope createJarScope(String jarName, List classScopes) { return Scope.builder(ScopeType.JAR, jarName, 0, 0).name(jarName).scopes(classScopes).build(); } diff --git a/dd-java-agent/agent-debugger/src/main/resources/third_party_libraries.json b/dd-java-agent/agent-debugger/src/main/resources/third_party_libraries.json index 5a283120ab1..3bf4cef786e 100644 --- a/dd-java-agent/agent-debugger/src/main/resources/third_party_libraries.json +++ b/dd-java-agent/agent-debugger/src/main/resources/third_party_libraries.json @@ -1 +1 @@ -{"version":"0.1","prefixes":["_COROUTINE.","__redirected.","aQute.","additionalTypes.","akka.","antlr.","arrow.","batch.","biweekly.","brave.","breeze.","bsh.","cache.","cats.","clojure.","contribs.","customplugins.","dagger.","datadog.","difflib.","dispatch.","documentation.","doobie.","elemental.","enumeratum.","errorinfo.","example.","examples.","fansi.","feign.","flexjson.","freemarker.","fs2.","fuel.","gnu.","gogoproto.","grails.","graphql.","groovy.","groovyx.","info.","instrumentation.","izumi.","j2html.","jakarta.","jarv.","java.","javaslang.","javassist.","javax.","javolution.","jaxp.","jcifs.","jdk.","jline.","jnr.","jodd.","joptsimple.","json.","jsr166y.","junit.","jxl.","kafka.","kamon.","kotlin.","kotlinx.","liquibase.","lombok.","magnolia.","magnolia1.","metadata.","microsoft.","mssql.","netscape.","nonapi.","ognl.","okhttp3.","okio.","oshi.","parquet.","perf.","picocli.","play.","pprint.","psvi.","pureconfig.","py4j.","quickfix.","reactivefeign.","reactor.","retrofit.","retrofit2.","rx.","sample.","samples.","scala.","scalacache.","scalapb.","schemaLookup.","scodec.","serp.","shapeless.","slick.","sourcecode.","spark.","spock.","spray.","springfox.","sttp.","sun.","test.","thredds.","tools.","twitter4j.","ua_parser.","ucar.","util.","utilities.","views.","waffle.","xpathloc.","xsbti.","zio.","zipkin2.","zmq.","EDU.oswego.cs.dl.util.concurrent.","Invokers.auth.","_templates.java.","_templates.javax.realtime.","_templates.javolution.","ai.x.play.json.","aj.org.objectweb.asm.","android.annotation.","ar.com.fdvs.dj.","ar.com.hjg.pngj.","asset.pipeline.","at.favre.lib.","au.com.bytecode.opencsv.","aws.sdk.kotlin.runtime.","aws.smithy.kotlin.runtime.","be.quodlibet.boxable.","bitronix.tm.","biz.paluch.logging.","br.com.caelum.stella.","ca.uhn.","ch.hsr.geohash.","ch.lambdaj.","ch.qos.","cn.hutool.","co.elastic.","com.aayushatharva.brotli4j.","com.adobe.xmp.","com.adyen.","com.aerospike.client.","com.algolia.search.","com.alibaba.","com.allen_sauer.gwt.log.","com.amazon.","com.amazonaws.","com.amplitude.","com.api.jsonata4java.","com.apollographql.","com.arjuna.","com.artofsolving.jodconverter.","com.atlassian.","com.atomikos.","com.auth0.","com.aventrix.jnanoid.jnanoid.","com.azure.","com.baomidou.mybatisplus.","com.bazaarvoice.jolt.","com.bedatadriven.jackson.datatype.jts.","com.bettercloud.vault.","com.beust.","com.blogspot.mydailyjava.weaklockfree.","com.blueconic.browscap.","com.botronsoft.cmj.spitools.","com.boundary.","com.box.sdk.","com.braintreegateway.","com.carrotsearch.","com.caucho.","com.chargebee.","com.clearspring.","com.cloudbees.","com.cloudinary.","com.codahale.metrics.","com.codepoetics.protonpack.","com.cognitect.transit.","com.comcast.","com.contentful.java.cda.","com.conversantmedia.util.","com.coravy.hudson.plugins.github.","com.coremedia.iso.","com.corundumstudio.socketio.","com.couchbase.client.","com.coxautodev.graphql.tools.","com.cronutils.","com.ctc.wstx.","com.cybersource.","com.damnhandy.uri.template.","com.datadog.","com.datastax.","com.dd.plist.","com.demo.","com.devskiller.friendly_id.","com.docusign.esign.","com.drew.","com.dropbox.core.","com.dslplatform.json.","com.eaio.util.lang.","com.eaio.uuid.","com.eatthepath.","com.eclipsesource.json.","com.ecwid.consul.","com.epam.parso.","com.esotericsoftware.","com.esri.core.geometry.","com.ethlo.time.","com.example.ipo.jaxb.","com.expediagroup.graphql.","com.facebook.ads.","com.fasterxml.","com.fatboyindustrial.gsonjavatime.","com.flipkart.zjsonpatch.","com.floreysoft.jmte.","com.gargoylesoftware.htmlunit.","com.giffing.bucket4j.spring.boot.starter.","com.github.andrewoma.dexx.collection.","com.github.benmanes.caffeine.","com.github.blagerweij.sessionlock.","com.github.blemale.scaffeine.","com.github.bohnman.squiggly.","com.github.cliftonlabs.json_simple.","com.github.cloudyrock.","com.github.curiousoddman.rgxgen.","com.github.davidmoten.guavamini.","com.github.difflib.","com.github.dikhan.","com.github.dockerjava.","com.github.doyaaaaaken.kotlincsv.","com.github.dozermapper.","com.github.f4b6a3.ulid.","com.github.f4b6a3.uuid.","com.github.fge.","com.github.gavlyukovskiy.boot.jdbc.decorator.","com.github.gquintana.metrics.","com.github.gundy.semver4j.","com.github.jaiimageio.","com.github.jasync.sql.db.","com.github.javafaker.","com.github.javaparser.","com.github.jknack.handlebars.","com.github.jsonldjava.","com.github.junrar.","com.github.kagkarlsson.","com.github.kittinunf.result.","com.github.luben.zstd.","com.github.mangstadt.vinnie.","com.github.michaelbull.result.","com.github.mustachejava.","com.github.openjson.","com.github.packageurl.","com.github.pagehelper.","com.github.pjfanning.","com.github.rholder.retry.","com.github.rvesse.airline.","com.github.rzymek.opczip.","com.github.scribejava.","com.github.seratch.jslack.","com.github.shyiko.mysql.binlog.","com.github.slugify.","com.github.therapi.runtimejavadoc.","com.github.tminglei.","com.github.tomakehurst.wiremock.","com.github.tototoshi.","com.github.udpa.udpa.type.v1.","com.github.vertical_blank.sqlformatter.","com.github.victools.jsonschema.generator.","com.github.wnameless.json.","com.github.xds.","com.github.yuchi.semver.","com.github.zafarkhaja.semver.","com.github.ziplet.filter.compression.","com.gocardless.","com.google.","com.googlecode.","com.grack.nanojson.","com.graphbuilder.","com.gs.collections.","com.hazelcast.","com.headius.","com.healthmarketscience.","com.helger.commons.","com.helger.css.","com.hierynomus.","com.hubspot.jackson.datatype.protobuf.","com.hubspot.jinjava.","com.ibm.","com.ifountain.opsgenie.client.","com.infradna.tool.bridge_method_injector.","com.intellij.util.io.","com.intuit.","com.itextpdf.","com.jakewharton.retrofit.","com.jamesmurty.utils.","com.jamonapi.","com.jamontomcat.","com.jayway.jsonpath.","com.jcabi.","com.jcraft.jsch.","com.jcraft.jzlib.","com.jhlabs.","com.jmatio.","com.joestelmach.natty.","com.jolbox.bonecp.","com.jsoniter.","com.kenai.jffi.","com.kenai.jnr.x86asm.","com.keypoint.","com.kjetland.jackson.jsonSchema.","com.knuddels.jtokkit.","com.lambdaworks.","com.launchdarkly.sdk.","com.liferay.","com.linecorp.armeria.","com.lmax.disruptor.","com.lowagie.","com.mailjet.client.","com.mangofactory.swagger.","com.mapbox.geojson.","com.martiansoftware.nailgun.","com.mashape.unirest.","com.mastercard.developer.","com.mattbertolini.liquibase.logging.slf4j.","com.maxmind.","com.mchange.","com.meterware.","com.microsoft.","com.microtripit.mandrillapp.lutung.","com.mifmif.common.regex.","com.migcomponents.migbase64.","com.mixpanel.mixpanelapi.","com.mongodb.","com.monitorjbl.xlsx.","com.mortennobel.imagescaling.","com.mp4parser.","com.mysema.","com.mysql.","com.navercorp.lucy.security.xss.servletfilter.","com.neovisionaries.","com.netflix.","com.networknt.","com.newrelic.","com.nhncorp.lucy.security.xss.","com.nimbusds.","com.ning.","com.notnoop.","com.nulabinc.zxcvbn.","com.octo.captcha.","com.oembedler.moon.graphiql.boot.","com.oembedler.moon.graphql.boot.","com.okta.","com.onelogin.saml2.","com.ongres.saslprep.","com.ongres.scram.client.","com.ongres.scram.common.","com.ongres.stringprep.","com.opencsv.","com.openhtmltopdf.","com.opensymphony.","com.optimaize.langdetect.","com.optimizely.ab.","com.oracle.","com.orbitz.consul.","com.owlike.genson.","com.p6spy.engine.","com.papertrail.profiler.","com.paypal.","com.pff.","com.plaid.client.","com.poiji.","com.prowidesoftware.","com.puppycrawl.tools.checkstyle.","com.pusher.rest.","com.querydsl.","com.rabbitmq.","com.redis.","com.restfb.","com.rits.","com.rollbar.","com.rometools.","com.ryantenney.metrics.","com.salesforce.reactorgrpc.stub.","com.samskivert.mustache.","com.sanctionco.jmail.","com.sangupta.murmur.","com.segment.","com.sendgrid.","com.sforce.","com.shieldsolutions.velocity.","com.sksamuel.elastic4s.","com.slack.api.","com.smartystreets.api.","com.snowflake.client.jdbc.","com.softwaremill.","com.sonar.sslr.","com.sonyericsson.rebuild.","com.spatial4j.core.","com.spotify.futures.","com.squareup.","com.steadystate.css.","com.stoyanr.evictor.","com.stripe.","com.sun.","com.swoval.","com.tdunning.math.stats.","com.terracotta.","com.terracottatech.offheapstore.","com.theokanning.openai.","com.thetransactioncompany.","com.thoughtworks.","com.timgroup.statsd.","com.tinkerpop.blueprints.","com.tomgibara.crinch.hashing.","com.topologi.diffx.","com.turo.pushy.apns.","com.twelvemonkeys.","com.twilio.","com.twitter.","com.typesafe.","com.uber.","com.udojava.evalex.","com.ulisesbocchio.jasyptspringboot.","com.ulisesbocchio.jasyptspringbootstarter.","com.unboundid.","com.univocity.parsers.","com.upokecenter.","com.uwyn.jhighlight.","com.vaadin.","com.vdurmont.","com.vividsolutions.jts.","com.vividsolutions.jtsexample.","com.vladmihalcea.","com.vladsch.flexmark.","com.warrenstrange.googleauth.","com.webauthn4j.","com.webcohesion.enunciate.metadata.","com.wordnik.swagger.","com.yahoo.","com.yammer.metrics.","com.yubico.u2f.","com.zaxxer.","commonj.sdo.","cucumber.api.cli.","cz.jirutka.rsql.parser.","cz.vutbr.web.","dd.trace.","de.brendamour.jpasskit.","de.codecentric.","de.danielbechler.","de.heikoseeberger.akkahttpcirce.","de.huxhorn.sulky.ulid.","de.javakaffee.","de.jollyday.","de.odysseus.","de.rototor.pdfbox.graphics2d.","de.schlichtherle.truezip.","de.siegmar.","de.undercouch.bson4jackson.","demo.x.devapi.","dev.akkinoc.spring.boot.logback.access.","dev.failsafe.","dev.miku.r2dbc.mysql.","dev.samstevens.totp.","dk.brics.automaton.","dsl_json.java.util.","edu.emory.mathcs.backport.java.util.","edu.stanford.nlp.","edu.umd.cs.findbugs.annotations.","edu.vt.middleware.password.","envoy.annotations.","es.moki.ratelimitj.core.","eu.bengreen.data.utility.","eu.bitwalker.useragentutils.","eu.medsea.","eu.timepit.","fi.iki.elonen.","fi.solita.clamav.","fish.payara.","fr.opensagres.","google.monitoring.v3.","hudson.plugins.favorite.","ietf.params.xml.ns.","ij.gui.","ij.io.","ij.macro.","ij.measure.","ij.plugin.","ij.process.","ij.text.","ij.util.","inet.ipaddr.","io.agroal.","io.airlift.","io.aleph.dirigiste.","io.asyncer.r2dbc.mysql.","io.atlassian.","io.awspring.cloud.","io.burt.jmespath.","io.changock.migration.api.annotations.","io.circe.","io.cloudevents.","io.confluent.","io.cucumber.","io.debezium.","io.dropwizard.","io.ebean.annotation.","io.envoyproxy.","io.fabric8.","io.federecio.dropwizard.sample.","io.federecio.dropwizard.swagger.","io.getquill.","io.getunleash.","io.github.","io.grpc.","io.gsonfire.","io.hawt.","io.hypersistence.","io.intercom.api.","io.jaegertracing.","io.javalin.","io.jsonwebtoken.","io.kcache.","io.keen.client.java.","io.ktor.","io.kubernetes.client.","io.leangen.geantyref.","io.leangen.graphql.","io.lemonlabs.uri.","io.lettuce.core.","io.micrometer.","io.micronaut.","io.minio.","io.mongock.","io.nats.","io.netty.","io.opencensus.","io.opentelemetry.","io.opentracing.","io.pebbletemplates.pebble.","io.perfmark.","io.pivotal.","io.prometheus.","io.protostuff.","io.quarkus.","io.r2dbc.","io.reactivex.","io.restassured.","io.rsocket.","io.scalaland.chimney.","io.searchbox.","io.sentry.","io.smallrye.","io.split.","io.swagger.","io.temporal.","io.undertow.","io.vavr.","io.vertx.","jargs.gnu.","javaemul.internal.","javanet.staxutils.","jersey.repackaged.","jj2000.j2k.","jp.gr.xml.relax.","kanela.agent.","kong.unirest.","kr.motd.maven.os.","ma.glasnost.orika.","mdg.engine.proto.","me.paulschwarz.springdotenv.","me.qmx.jitescript.","me.xdrop.","me.xuender.unidecode.","monix.execution.","mu.internal.","mutiny.zero.flow.adapters.","name.neuhalfen.projects.crypto.","net.agkn.hll.","net.arnx.jsonic.","net.authorize.","net.bull.javamelody.","net.bytebuddy.","net.coobird.thumbnailator.","net.datafaker.","net.devh.boot.grpc.","net.engio.mbassy.","net.fortuna.ical4j.","net.gpedro.integrations.slack.","net.htmlparser.jericho.","net.i2p.crypto.eddsa.","net.iakovlev.timeshape.","net.iharder.","net.java.","net.javacrumbs.","net.jcip.annotations.","net.jodah.","net.jpountz.","net.lingala.zip4j.","net.logstash.log4j.","net.logstash.logback.","net.miginfocom.","net.minidev.","net.oauth.","net.objecthunter.exp4j.","net.objectlab.kit.datecalc.","net.openhft.","net.postgis.jdbc.","net.rakugakibox.spring.boot.logback.access.","net.razorvine.pickle.","net.razorvine.pyro.","net.redhogs.cronparser.","net.rubyeye.xmemcached.","net.schmizz.","net.sf.","net.shibboleth.utilities.java.support.","net.snowflake.client.","net.sourceforge.","net.spy.memcached.","net.thisptr.jackson.jq.","net.ttddyy.dsproxy.","nl.altindag.ssl.","nl.basjes.","no.finn.unleash.","nu.xom.","nz.net.ultraq.","oauth.signpost.","one.util.streamex.","opennlp.tools.","org.HdrHistogram.","org.I0Itec.zkclient.","org.LatencyUtils.","org.abego.treelayout.","org.acegisecurity.","org.activiti.","org.aesh.","org.agrona.","org.ahocorasick.","org.antlr.","org.aopalliance.","org.apache.","org.apiguardian.api.","org.appformer.maven.","org.artifactory.","org.asciidoctor.","org.aspectj.","org.assertj.core.","org.asynchttpclient.","org.atmosphere.","org.atteo.evo.inflector.","org.attoparser.","org.awaitility.","org.axonframework.","org.beanio.","org.bedework.","org.bouncycastle.","org.brotli.dec.","org.bson.","org.burningwave.","org.bytedeco.javacpp.","org.cache2k.","org.camunda.","org.castor.","org.checkerframework.","org.cliffc.high_scale_lib.","org.cloudinary.json.","org.codehaus.","org.codelibs.jhighlight.","org.cometd.","org.commonmark.","org.conscrypt.","org.coursera.metrics.","org.crac.","org.cryptacular.","org.custommonkey.xmlunit.","org.cyberneko.html.","org.datadog.jmxfetch.","org.dataloader.","org.datanucleus.","org.dhatim.fastexcel.","org.directwebremoting.","org.displaytag.","org.dmg.pmml.","org.docx4j.","org.dom4j.","org.dozer.","org.drools.","org.eclipse.","org.egothor.stemmer.","org.ehcache.","org.ejml.","org.elasticsearch.","org.etsi.uri.x01903.v13.","org.etsi.uri.x01903.v14.","org.everit.json.schema.","org.exolab.castor.","org.fest.util.","org.ff4j.","org.fhir.ucum.","org.fife.","org.fit.","org.flowable.","org.fluentd.logger.","org.flywaydb.","org.fusesource.","org.gagravarr.","org.geojson.","org.geolatte.geom.","org.github.jamm.","org.gitlab4j.api.","org.glassfish.","org.glox4j.openpackaging.packages.","org.graalvm.sdk.","org.grails.","org.h2.","org.hamcrest.","org.hashids.","org.hazlewood.connor.bottema.emailaddress.","org.hibernate.","org.hl7.fhir.","org.hsqldb.","org.htmlcleaner.","org.htmlparser.","org.http4s.","org.iban4j.","org.imgscalr.","org.immutables.","org.incava.diff.","org.infinispan.","org.influxdb.","org.ini4j.","org.intellij.lang.annotations.","org.iostreams.streams.","org.iq80.","org.iso_relax.","org.jabsorb.","org.jacoco.","org.jadira.usertype.","org.jaitools.","org.jasig.cas.client.","org.jasypt.","org.java_websocket.","org.javamoney.moneta.","org.javasimon.","org.javatuples.","org.javers.","org.jaxen.","org.jboss.","org.jbpm.","org.jclouds.","org.jcodings.","org.jctools.","org.jdbcdslog.","org.jdbi.v3.","org.jdom.","org.jdom2.","org.jeasy.random.","org.jeasy.rules.","org.jenkinsci.constant_pool_scanner.","org.jetbrains.","org.jets3t.","org.jfree.","org.jfrog.filespecs.","org.jgrapht.","org.jgroups.","org.jheaps.","org.jibx.runtime.","org.jinterop.","org.jivesoftware.smack.","org.jline.","org.jobrunr.","org.joda.","org.jodconverter.","org.jolokia.","org.jongo.","org.joni.","org.jooq.","org.joor.","org.jose4j.","org.jpmml.model.","org.jpos.","org.jrobin.","org.jruby.","org.json.","org.json4s.","org.jsoup.","org.jsr166.","org.junit.","org.jvnet.","org.jxls.","org.keycloak.","org.kie.","org.kohsuke.","org.koshuke.stapler.simile.timeline.","org.krysalis.barcode4j.","org.kxml2.","org.ldaptive.","org.linguafranca.pwdb.","org.litote.kmongo.","org.locationtech.","org.log4s.","org.lognet.springboot.grpc.","org.luaj.vm2.","org.mapdb.","org.mapstruct.","org.mariadb.","org.merlin.io.","org.messaginghub.pooled.jms.","org.mindrot.","org.mitre.dsmiley.httpproxy.","org.mockito.","org.mockserver.","org.modelmapper.","org.mortbay.","org.mozilla.","org.msgpack.","org.mybatis.","org.n52.jackson.datatype.jts.","org.neo4j.","org.netpreserve.jwarc.","org.newsclub.","org.nibor.autolink.","org.noggit.","org.nustaq.","org.oasis_open.docs.","org.oasisopen.sca.","org.objectweb.asm.","org.objenesis.","org.ocpsoft.prettytime.","org.omg.","org.omnifaces.","org.openapitools.","org.opendope.","org.opengis.","org.openid4java.","org.openjdk.jmh.","org.openjdk.jol.","org.openqa.selenium.","org.opensaml.","org.opensearch.","org.opentest4j.","org.openxmlformats.schemas.","org.ops4j.","org.optaplanner.core.","org.organicdesign.fp.","org.osgi.","org.owasp.","org.pac4j.","org.parboiled.","org.parboiled2.","org.passay.","org.pcollections.","org.pegdown.","org.perf4j.","org.pf4j.","org.picocontainer.","org.plutext.jaxb.xslfo.","org.polyjdbc.core.","org.postgresql.","org.pptx4j.","org.primefaces.","org.projectnessie.cel.","org.quartz.","org.quickfixj.","org.reactivestreams.","org.redisson.","org.reflections.","org.rnorth.ducttape.","org.roaringbitmap.","org.rocksdb.","org.rrd4j.","org.scalatools.testing.","org.scannotation.","org.scribe.","org.semver4j.","org.simpleflatmapper.","org.simpleframework.xml.","org.simplejavamail.","org.sitemesh.","org.skife.jdbi.v2.","org.skyscreamer.jsonassert.","org.slf4j.","org.snakeyaml.engine.","org.snmp4j.","org.socialsignin.spring.data.dynamodb.","org.sonar.","org.sonarqube.ws.","org.sonarsource.","org.sonatype.","org.spockframework.","org.spongycastle.","org.springdoc.","org.springframework.","org.springmodules.","org.sqlite.","org.stagemonitor.","org.stringtemplate.v4.","org.subethamail.","org.supercsv.","org.synchronoss.cloud.nio.","org.tallison.xmp.","org.tartarus.snowball.","org.terracotta.","org.testcontainers.","org.testng.","org.threeten.","org.thymeleaf.","org.tmatesoft.svn.","org.togglz.","org.tomitribe.auth.signatures.","org.tpolecat.","org.tuckey.web.filters.urlrewrite.","org.tukaani.xz.","org.typelevel.","org.unbescape.","org.uncommons.maths.","org.ungoverned.osgi.service.shell.","org.valiktor.","org.w3.x2000.x09.xmldsig.","org.w3c.","org.weakref.jmx.","org.web3j.","org.webjars.","org.wildfly.","org.wso2.","org.xbill.DNS.","org.xerial.snappy.","org.xhtmlrenderer.","org.xlsx4j.","org.xml.sax.","org.xmlpull.","org.xmlresolver.","org.xmlunit.","org.xnio.","org.yaml.snakeyaml.","org.zalando.","org.zendesk.client.v2.","org.zeromq.","org.zeroturnaround.","pabeles.concurrency.","pdi.jwt.","pl.tlinkowski.unij.","pl.touk.throwing.","redis.clients.jedis.","ro.isdc.wro.","ru.vyarus.","sbt.testing.","shaded.shaded.","si.uom.","software.amazon.","software.aws.rds.jdbc.mysql.","systems.uom.common.","tec.uom.lib.common.","tech.allegro.schema.json2avro.converter.","tech.jhipster.","tech.units.indriya.","tech.uom.lib.common.","udpa.annotations.","uk.ac.rdg.resc.edal.time.","vc.inreach.aws.request.","vlsi.utils.","xds.annotations.v3.","xyz.capybara.clamav."]} \ No newline at end of file +{"version":"0.1","prefixes":["_COROUTINE.","__redirected.","aQute.","additionalTypes.","akka.","antlr.","arrow.","batch.","biweekly.","brave.","breeze.","bsh.","cache.","cats.","clojure.","contribs.","customplugins.","dagger.","datadog.","difflib.","dispatch.","documentation.","doobie.","elemental.","enumeratum.","errorinfo.","example.","examples.","fansi.","feign.","flexjson.","freemarker.","fs2.","fuel.","gnu.","gogoproto.","grails.","graphql.","groovy.","groovyx.","info.","instrumentation.","izumi.","j2html.","jakarta.","jarv.","java.","javaslang.","javassist.","javax.","javolution.","jaxp.","jcifs.","jdk.","jline.","jnr.","jodd.","joptsimple.","json.","jsr166y.","junit.","jxl.","kafka.","kamon.","kotlin.","kotlinx.","liquibase.","lombok.","magnolia.","magnolia1.","metadata.","microsoft.","mssql.","netscape.","nonapi.","ognl.","okhttp3.","okio.","oshi.","parquet.","perf.","picocli.","play.","pprint.","psvi.","pureconfig.","py4j.","quickfix.","reactivefeign.","reactor.","retrofit.","retrofit2.","rx.","sample.","samples.","scala.","scalacache.","scalapb.","schemaLookup.","scodec.","serp.","shapeless.","slick.","sourcecode.","spark.","spock.","spray.","springfox.","sttp.","sun.","test.","thredds.","tools.","twitter4j.","ua_parser.","ucar.","util.","utilities.","views.","waffle.","xpathloc.","xsbti.","zio.","zipkin2.","zmq.","EDU.oswego.cs.dl.util.concurrent.","Invokers.auth.","_templates.java.","_templates.javax.realtime.","_templates.javolution.","ai.x.play.json.","aj.org.objectweb.asm.","android.annotation.","ar.com.fdvs.dj.","ar.com.hjg.pngj.","asset.pipeline.","at.favre.lib.","au.com.bytecode.opencsv.","aws.sdk.kotlin.runtime.","aws.smithy.kotlin.runtime.","be.quodlibet.boxable.","bitronix.tm.","biz.paluch.logging.","br.com.caelum.stella.","ca.uhn.","ch.hsr.geohash.","ch.lambdaj.","ch.qos.","cn.hutool.","co.elastic.","com.aayushatharva.brotli4j.","com.adobe.xmp.","com.adyen.","com.aerospike.client.","com.algolia.search.","com.alibaba.","com.allen_sauer.gwt.log.","com.amazon.","com.amazonaws.","com.amplitude.","com.api.jsonata4java.","com.apollographql.","com.arjuna.","com.artofsolving.jodconverter.","com.atlassian.","com.atomikos.","com.auth0.","com.aventrix.jnanoid.jnanoid.","com.azure.","com.baomidou.mybatisplus.","com.bazaarvoice.jolt.","com.bedatadriven.jackson.datatype.jts.","com.bettercloud.vault.","com.beust.","com.blogspot.mydailyjava.weaklockfree.","com.blueconic.browscap.","com.botronsoft.cmj.spitools.","com.boundary.","com.box.sdk.","com.braintreegateway.","com.carrotsearch.","com.caucho.","com.chargebee.","com.clearspring.","com.cloudbees.","com.cloudinary.","com.codahale.metrics.","com.codepoetics.protonpack.","com.cognitect.transit.","com.comcast.","com.contentful.java.cda.","com.conversantmedia.util.","com.coravy.hudson.plugins.github.","com.coremedia.iso.","com.corundumstudio.socketio.","com.couchbase.client.","com.coxautodev.graphql.tools.","com.cronutils.","com.ctc.wstx.","com.cybersource.","com.damnhandy.uri.template.","com.datadog.","com.datastax.","com.dd.plist.","com.demo.","com.devskiller.friendly_id.","com.docusign.esign.","com.drew.","com.dropbox.core.","com.dslplatform.json.","com.eaio.util.lang.","com.eaio.uuid.","com.eatthepath.","com.eclipsesource.json.","com.ecwid.consul.","com.epam.parso.","com.esotericsoftware.","com.esri.core.geometry.","com.ethlo.time.","com.example.ipo.jaxb.","com.expediagroup.graphql.","com.facebook.ads.","com.fasterxml.","com.fatboyindustrial.gsonjavatime.","com.flipkart.zjsonpatch.","com.floreysoft.jmte.","com.gargoylesoftware.htmlunit.","com.giffing.bucket4j.spring.boot.starter.","com.github.andrewoma.dexx.collection.","com.github.benmanes.caffeine.","com.github.blagerweij.sessionlock.","com.github.blemale.scaffeine.","com.github.bohnman.squiggly.","com.github.cliftonlabs.json_simple.","com.github.cloudyrock.","com.github.curiousoddman.rgxgen.","com.github.davidmoten.guavamini.","com.github.difflib.","com.github.dikhan.","com.github.dockerjava.","com.github.doyaaaaaken.kotlincsv.","com.github.dozermapper.","com.github.f4b6a3.ulid.","com.github.f4b6a3.uuid.","com.github.fge.","com.github.gavlyukovskiy.boot.jdbc.decorator.","com.github.gquintana.metrics.","com.github.gundy.semver4j.","com.github.jaiimageio.","com.github.jasync.sql.db.","com.github.javafaker.","com.github.javaparser.","com.github.jknack.handlebars.","com.github.jsonldjava.","com.github.junrar.","com.github.kagkarlsson.","com.github.kittinunf.result.","com.github.luben.zstd.","com.github.mangstadt.vinnie.","com.github.michaelbull.result.","com.github.mustachejava.","com.github.openjson.","com.github.packageurl.","com.github.pagehelper.","com.github.pjfanning.","com.github.rholder.retry.","com.github.rvesse.airline.","com.github.rzymek.opczip.","com.github.scribejava.","com.github.seratch.jslack.","com.github.shyiko.mysql.binlog.","com.github.slugify.","com.github.therapi.runtimejavadoc.","com.github.tminglei.","com.github.tomakehurst.wiremock.","com.github.tototoshi.","com.github.udpa.udpa.type.v1.","com.github.vertical_blank.sqlformatter.","com.github.victools.jsonschema.generator.","com.github.wnameless.json.","com.github.xds.","com.github.yuchi.semver.","com.github.zafarkhaja.semver.","com.github.ziplet.filter.compression.","com.gocardless.","com.google.","com.googlecode.","com.grack.nanojson.","com.graphbuilder.","com.gs.collections.","com.hazelcast.","com.headius.","com.healthmarketscience.","com.helger.commons.","com.helger.css.","com.hierynomus.","com.hubspot.jackson.datatype.protobuf.","com.hubspot.jinjava.","com.ibm.","com.ifountain.opsgenie.client.","com.infradna.tool.bridge_method_injector.","com.intellij.util.io.","com.intuit.","com.itextpdf.","com.jakewharton.retrofit.","com.jamesmurty.utils.","com.jamonapi.","com.jamontomcat.","com.jayway.jsonpath.","com.jcabi.","com.jcraft.jsch.","com.jcraft.jzlib.","com.jhlabs.","com.jmatio.","com.joestelmach.natty.","com.jolbox.bonecp.","com.jsoniter.","com.kenai.jffi.","com.kenai.jnr.x86asm.","com.keypoint.","com.kjetland.jackson.jsonSchema.","com.knuddels.jtokkit.","com.lambdaworks.","com.launchdarkly.sdk.","com.liferay.","com.linecorp.armeria.","com.lmax.disruptor.","com.lowagie.","com.mailjet.client.","com.mangofactory.swagger.","com.mapbox.geojson.","com.martiansoftware.nailgun.","com.mashape.unirest.","com.mastercard.developer.","com.mattbertolini.liquibase.logging.slf4j.","com.maxmind.","com.mchange.","com.meterware.","com.microsoft.","com.microtripit.mandrillapp.lutung.","com.mifmif.common.regex.","com.migcomponents.migbase64.","com.mixpanel.mixpanelapi.","com.mongodb.","com.monitorjbl.xlsx.","com.mortennobel.imagescaling.","com.mp4parser.","com.mysema.","com.mysql.","com.navercorp.lucy.security.xss.servletfilter.","com.neovisionaries.","com.netflix.","com.networknt.","com.newrelic.","com.nhncorp.lucy.security.xss.","com.nimbusds.","com.ning.","com.notnoop.","com.nulabinc.zxcvbn.","com.octo.captcha.","com.oembedler.moon.graphiql.boot.","com.oembedler.moon.graphql.boot.","com.okta.","com.onelogin.saml2.","com.ongres.saslprep.","com.ongres.scram.client.","com.ongres.scram.common.","com.ongres.stringprep.","com.opencsv.","com.openhtmltopdf.","com.opensymphony.","com.optimaize.langdetect.","com.optimizely.ab.","com.oracle.","com.orbitz.consul.","com.owlike.genson.","com.p6spy.engine.","com.papertrail.profiler.","com.paypal.","com.pff.","com.plaid.client.","com.poiji.","com.prowidesoftware.","com.puppycrawl.tools.checkstyle.","com.pusher.rest.","com.querydsl.","com.rabbitmq.","com.redis.","com.restfb.","com.rits.","com.rollbar.","com.rometools.","com.ryantenney.metrics.","com.salesforce.reactorgrpc.stub.","com.samskivert.mustache.","com.sanctionco.jmail.","com.sangupta.murmur.","com.segment.","com.sendgrid.","com.sforce.","com.shieldsolutions.velocity.","com.sksamuel.elastic4s.","com.slack.api.","com.smartystreets.api.","com.snowflake.client.jdbc.","com.softwaremill.","com.sonar.sslr.","com.sonyericsson.rebuild.","com.spatial4j.core.","com.spotify.futures.","com.squareup.","com.steadystate.css.","com.stoyanr.evictor.","com.stripe.","com.sun.","com.swoval.","com.tdunning.math.stats.","com.terracotta.","com.terracottatech.offheapstore.","com.theokanning.openai.","com.thetransactioncompany.","com.thoughtworks.","com.timgroup.statsd.","com.tinkerpop.blueprints.","com.tomgibara.crinch.hashing.","com.topologi.diffx.","com.turo.pushy.apns.","com.twelvemonkeys.","com.twilio.","com.twitter.","com.typesafe.","com.uber.","com.udojava.evalex.","com.ulisesbocchio.jasyptspringboot.","com.ulisesbocchio.jasyptspringbootstarter.","com.unboundid.","com.univocity.parsers.","com.upokecenter.","com.uwyn.jhighlight.","com.vaadin.","com.vdurmont.","com.vividsolutions.jts.","com.vividsolutions.jtsexample.","com.vladmihalcea.","com.vladsch.flexmark.","com.warrenstrange.googleauth.","com.webauthn4j.","com.webcohesion.enunciate.metadata.","com.wordnik.swagger.","com.yahoo.","com.yammer.metrics.","com.yubico.u2f.","com.zaxxer.","commonj.sdo.","cucumber.api.cli.","cz.jirutka.rsql.parser.","cz.vutbr.web.","dd.trace.","de.brendamour.jpasskit.","de.codecentric.","de.danielbechler.","de.heikoseeberger.akkahttpcirce.","de.huxhorn.sulky.ulid.","de.javakaffee.","de.jollyday.","de.odysseus.","de.rototor.pdfbox.graphics2d.","de.schlichtherle.truezip.","de.siegmar.","de.undercouch.bson4jackson.","demo.x.devapi.","dev.akkinoc.spring.boot.logback.access.","dev.failsafe.","dev.miku.r2dbc.mysql.","dev.samstevens.totp.","dk.brics.automaton.","dsl_json.java.util.","edu.emory.mathcs.backport.java.util.","edu.stanford.nlp.","edu.umd.cs.findbugs.annotations.","edu.vt.middleware.password.","envoy.annotations.","es.moki.ratelimitj.core.","eu.bengreen.data.utility.","eu.bitwalker.useragentutils.","eu.medsea.","eu.timepit.","fi.iki.elonen.","fi.solita.clamav.","fish.payara.","fr.opensagres.","google.monitoring.v3.","hudson.plugins.favorite.","ietf.params.xml.ns.","ij.gui.","ij.io.","ij.macro.","ij.measure.","ij.plugin.","ij.process.","ij.text.","ij.util.","inet.ipaddr.","io.agroal.","io.airlift.","io.aleph.dirigiste.","io.asyncer.r2dbc.mysql.","io.atlassian.","io.awspring.cloud.","io.burt.jmespath.","io.changock.migration.api.annotations.","io.circe.","io.cloudevents.","io.confluent.","io.cucumber.","io.debezium.","io.dropwizard.","io.ebean.annotation.","io.envoyproxy.","io.fabric8.","io.federecio.dropwizard.sample.","io.federecio.dropwizard.swagger.","io.getquill.","io.getunleash.","io.github.","io.grpc.","io.gsonfire.","io.hawt.","io.hypersistence.","io.intercom.api.","io.jaegertracing.","io.javalin.","io.jsonwebtoken.","io.kcache.","io.keen.client.java.","io.ktor.","io.kubernetes.client.","io.leangen.geantyref.","io.leangen.graphql.","io.lemonlabs.uri.","io.lettuce.core.","io.micrometer.","io.micronaut.","io.minio.","io.mongock.","io.nats.","io.netty.","io.opencensus.","io.opentelemetry.","io.opentracing.","io.pebbletemplates.pebble.","io.perfmark.","io.pivotal.","io.prometheus.","io.protostuff.","io.quarkus.","io.r2dbc.","io.reactivex.","io.restassured.","io.rsocket.","io.scalaland.chimney.","io.searchbox.","io.sentry.","io.smallrye.","io.split.","io.swagger.","io.temporal.","io.undertow.","io.vavr.","io.vertx.","it.unimi.dsi.","jargs.gnu.","javaemul.internal.","javanet.staxutils.","jersey.repackaged.","jj2000.j2k.","jp.gr.xml.relax.","kanela.agent.","kong.unirest.","kr.motd.maven.os.","ma.glasnost.orika.","mdg.engine.proto.","me.paulschwarz.springdotenv.","me.qmx.jitescript.","me.xdrop.","me.xuender.unidecode.","monix.execution.","mu.internal.","mutiny.zero.flow.adapters.","name.neuhalfen.projects.crypto.","net.agkn.hll.","net.arnx.jsonic.","net.authorize.","net.bull.javamelody.","net.bytebuddy.","net.coobird.thumbnailator.","net.datafaker.","net.devh.boot.grpc.","net.engio.mbassy.","net.fortuna.ical4j.","net.gpedro.integrations.slack.","net.htmlparser.jericho.","net.i2p.crypto.eddsa.","net.iakovlev.timeshape.","net.iharder.","net.java.","net.javacrumbs.","net.jcip.annotations.","net.jodah.","net.jpountz.","net.lingala.zip4j.","net.logstash.log4j.","net.logstash.logback.","net.miginfocom.","net.minidev.","net.oauth.","net.objecthunter.exp4j.","net.objectlab.kit.datecalc.","net.openhft.","net.postgis.jdbc.","net.rakugakibox.spring.boot.logback.access.","net.razorvine.pickle.","net.razorvine.pyro.","net.redhogs.cronparser.","net.rubyeye.xmemcached.","net.schmizz.","net.sf.","net.shibboleth.utilities.java.support.","net.snowflake.client.","net.sourceforge.","net.spy.memcached.","net.thisptr.jackson.jq.","net.ttddyy.dsproxy.","nl.altindag.ssl.","nl.basjes.","no.finn.unleash.","nu.xom.","nz.net.ultraq.","oauth.signpost.","one.util.streamex.","opennlp.tools.","org.HdrHistogram.","org.I0Itec.zkclient.","org.LatencyUtils.","org.abego.treelayout.","org.acegisecurity.","org.activiti.","org.aesh.","org.agrona.","org.ahocorasick.","org.antlr.","org.aopalliance.","org.apache.","org.apiguardian.api.","org.appformer.maven.","org.artifactory.","org.asciidoctor.","org.aspectj.","org.assertj.core.","org.asynchttpclient.","org.atmosphere.","org.atteo.evo.inflector.","org.attoparser.","org.awaitility.","org.axonframework.","org.beanio.","org.bedework.","org.bouncycastle.","org.brotli.dec.","org.bson.","org.burningwave.","org.bytedeco.javacpp.","org.cache2k.","org.camunda.","org.castor.","org.checkerframework.","org.cliffc.high_scale_lib.","org.cloudinary.json.","org.codehaus.","org.codelibs.jhighlight.","org.cometd.","org.commonmark.","org.conscrypt.","org.coursera.metrics.","org.crac.","org.cryptacular.","org.custommonkey.xmlunit.","org.cyberneko.html.","org.datadog.jmxfetch.","org.dataloader.","org.datanucleus.","org.dhatim.fastexcel.","org.directwebremoting.","org.displaytag.","org.dmg.pmml.","org.docx4j.","org.dom4j.","org.dozer.","org.drools.","org.eclipse.","org.egothor.stemmer.","org.ehcache.","org.ejml.","org.elasticsearch.","org.etsi.uri.x01903.v13.","org.etsi.uri.x01903.v14.","org.everit.json.schema.","org.exolab.castor.","org.fest.util.","org.ff4j.","org.fhir.ucum.","org.fife.","org.fit.","org.flowable.","org.fluentd.logger.","org.flywaydb.","org.fusesource.","org.gagravarr.","org.geojson.","org.geolatte.geom.","org.github.jamm.","org.gitlab4j.api.","org.glassfish.","org.glox4j.openpackaging.packages.","org.graalvm.sdk.","org.grails.","org.h2.","org.hamcrest.","org.hashids.","org.hazlewood.connor.bottema.emailaddress.","org.hibernate.","org.hl7.fhir.","org.hsqldb.","org.htmlcleaner.","org.htmlparser.","org.http4s.","org.iban4j.","org.imgscalr.","org.immutables.","org.incava.diff.","org.infinispan.","org.influxdb.","org.ini4j.","org.intellij.lang.annotations.","org.iostreams.streams.","org.iq80.","org.iso_relax.","org.jabsorb.","org.jacoco.","org.jadira.usertype.","org.jaitools.","org.jasig.cas.client.","org.jasypt.","org.java_websocket.","org.javamoney.moneta.","org.javasimon.","org.javatuples.","org.javers.","org.jaxen.","org.jboss.","org.jbpm.","org.jclouds.","org.jcodings.","org.jctools.","org.jdbcdslog.","org.jdbi.v3.","org.jdom.","org.jdom2.","org.jeasy.random.","org.jeasy.rules.","org.jenkinsci.constant_pool_scanner.","org.jetbrains.","org.jets3t.","org.jfree.","org.jfrog.filespecs.","org.jgrapht.","org.jgroups.","org.jheaps.","org.jibx.runtime.","org.jinterop.","org.jivesoftware.smack.","org.jline.","org.jobrunr.","org.joda.","org.jodconverter.","org.jolokia.","org.jongo.","org.joni.","org.jooq.","org.joor.","org.jose4j.","org.jpmml.model.","org.jpos.","org.jrobin.","org.jruby.","org.json.","org.json4s.","org.jsoup.","org.jsr166.","org.junit.","org.jvnet.","org.jxls.","org.keycloak.","org.kie.","org.kohsuke.","org.koshuke.stapler.simile.timeline.","org.krysalis.barcode4j.","org.kxml2.","org.ldaptive.","org.linguafranca.pwdb.","org.litote.kmongo.","org.locationtech.","org.log4s.","org.lognet.springboot.grpc.","org.luaj.vm2.","org.mapdb.","org.mapstruct.","org.mariadb.","org.merlin.io.","org.messaginghub.pooled.jms.","org.mindrot.","org.mitre.dsmiley.httpproxy.","org.mockito.","org.mockserver.","org.modelmapper.","org.mortbay.","org.mozilla.","org.msgpack.","org.mybatis.","org.n52.jackson.datatype.jts.","org.neo4j.","org.netpreserve.jwarc.","org.newsclub.","org.nibor.autolink.","org.noggit.","org.nustaq.","org.oasis_open.docs.","org.oasisopen.sca.","org.objectweb.asm.","org.objenesis.","org.ocpsoft.prettytime.","org.omg.","org.omnifaces.","org.openapitools.","org.opendope.","org.opengis.","org.openid4java.","org.openjdk.jmh.","org.openjdk.jol.","org.openqa.selenium.","org.opensaml.","org.opensearch.","org.opentest4j.","org.openxmlformats.schemas.","org.ops4j.","org.optaplanner.core.","org.organicdesign.fp.","org.osgi.","org.owasp.","org.pac4j.","org.parboiled.","org.parboiled2.","org.passay.","org.pcollections.","org.pegdown.","org.perf4j.","org.pf4j.","org.picocontainer.","org.plutext.jaxb.xslfo.","org.polyjdbc.core.","org.postgresql.","org.pptx4j.","org.primefaces.","org.projectnessie.cel.","org.quartz.","org.quickfixj.","org.reactivestreams.","org.redisson.","org.reflections.","org.rnorth.ducttape.","org.roaringbitmap.","org.rocksdb.","org.rrd4j.","org.scalatools.testing.","org.scannotation.","org.scribe.","org.semver4j.","org.simpleflatmapper.","org.simpleframework.xml.","org.simplejavamail.","org.sitemesh.","org.skife.jdbi.v2.","org.skyscreamer.jsonassert.","org.slf4j.","org.snakeyaml.engine.","org.snmp4j.","org.socialsignin.spring.data.dynamodb.","org.sonar.","org.sonarqube.ws.","org.sonarsource.","org.sonatype.","org.spockframework.","org.spongycastle.","org.springdoc.","org.springframework.","org.springmodules.","org.sqlite.","org.stagemonitor.","org.stringtemplate.v4.","org.subethamail.","org.supercsv.","org.synchronoss.cloud.nio.","org.tallison.xmp.","org.tartarus.snowball.","org.terracotta.","org.testcontainers.","org.testng.","org.threeten.","org.thymeleaf.","org.tmatesoft.svn.","org.togglz.","org.tomitribe.auth.signatures.","org.tpolecat.","org.tuckey.web.filters.urlrewrite.","org.tukaani.xz.","org.typelevel.","org.unbescape.","org.uncommons.maths.","org.ungoverned.osgi.service.shell.","org.valiktor.","org.w3.x2000.x09.xmldsig.","org.w3c.","org.weakref.jmx.","org.web3j.","org.webjars.","org.wildfly.","org.wso2.","org.xbill.DNS.","org.xerial.snappy.","org.xhtmlrenderer.","org.xlsx4j.","org.xml.sax.","org.xmlpull.","org.xmlresolver.","org.xmlunit.","org.xnio.","org.yaml.snakeyaml.","org.zalando.","org.zendesk.client.v2.","org.zeromq.","org.zeroturnaround.","pabeles.concurrency.","pdi.jwt.","pl.tlinkowski.unij.","pl.touk.throwing.","redis.clients.jedis.","ro.isdc.wro.","ru.vyarus.","sbt.testing.","shaded.shaded.","si.uom.","software.amazon.","software.aws.rds.jdbc.mysql.","systems.uom.common.","tec.uom.lib.common.","tech.allegro.schema.json2avro.converter.","tech.jhipster.","tech.units.indriya.","tech.uom.lib.common.","udpa.annotations.","uk.ac.rdg.resc.edal.time.","vc.inreach.aws.request.","vlsi.utils.","xds.annotations.v3.","xyz.capybara.clamav."]} diff --git a/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/sink/SymbolSinkTest.java b/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/sink/SymbolSinkTest.java index e5aecd929ef..bf4494c6631 100644 --- a/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/sink/SymbolSinkTest.java +++ b/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/sink/SymbolSinkTest.java @@ -14,6 +14,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; +import okhttp3.MediaType; import org.junit.jupiter.api.Test; class SymbolSinkTest { @@ -202,6 +203,31 @@ public void splitByClassScopesImpossible() { assertTrue(symbolUploaderMock.multiPartContents.isEmpty()); } + @Test + public void maxCompressedAndSplit() { + SymbolUploaderMock symbolUploaderMock = new SymbolUploaderMock(); + Config config = mock(Config.class); + when(config.getServiceName()).thenReturn("service1"); + when(config.isSymbolDatabaseCompressed()).thenReturn(true); + SymbolSink symbolSink = new SymbolSink(config, symbolUploaderMock, 512); + final int NUM_JAR_SCOPES = 100; + for (int i = 0; i < NUM_JAR_SCOPES; i++) { + symbolSink.addScope( + Scope.builder(ScopeType.JAR, "jar" + i + ".jar", 0, 0) + .scopes(singletonList(Scope.builder(ScopeType.CLASS, "class" + i, 0, 0).build())) + .build()); + } + symbolSink.flush(); + assertEquals(4, symbolUploaderMock.multiPartContents.size()); + for (int i = 0; i < 4; i += 2) { + BatchUploader.MultiPartContent eventContent = symbolUploaderMock.multiPartContents.get(i); + assertEquals("event", eventContent.getPartName()); + BatchUploader.MultiPartContent symbolContent = + symbolUploaderMock.multiPartContents.get(i + 1); + assertEquals(MediaType.get("application/gzip"), symbolContent.getMediaType()); + } + } + private static String assertMultipartContent(SymbolUploaderMock symbolUploaderMock, int index) { BatchUploader.MultiPartContent eventContent = symbolUploaderMock.multiPartContents.get(index); assertEquals("event", eventContent.getPartName());