GDD-Nantes / FedShop

Code for FedShop: The Federated Shop Benchmark
GNU General Public License v3.0
8 stars 0 forks source link

Add option to evaluate explicit join order in FedX #19

Closed mhoangvslev closed 1 year ago

mhoangvslev commented 1 year ago

Steps to debug

  1. Copy provenance.csv from generation phase

    cp experiments/bsbm/benchmark/generation/q06/instance_0/batch_0/provenance.csv experiments/bsbm/benchmark/evaluation/ideal/q06/instance_0/batch_0/provenance.csv
  2. Activate the right docker container (DO NOT DO THIS ON CHUCK)

    docker ps --all # Get the list of all containers
    docker stop <active_container>
    docker start <target_container>
  3. Change the port in experiments/bsbm/benchmark/evaluation/ideal/config/batch_0/ideal.conf

  4. On VSCode, Launch the "Debugging on specific query" with these args:

    experiments/bsbm/benchmark/evaluation/ideal/config/batch_0/ideal.conf experiments/bsbm/benchmark/generation/q06/instance_0/injected.sparql experiments/bsbm/benchmark/evaluation/ideal/q06/instance_0/batch_0/attempt_0/results.txt /dev/null experiments/bsbm/benchmark/evaluation/ideal/q06/instance_0/batch_0/attempt_0/query_plan.txt experiments/bsbm/benchmark/evaluation/ideal/q06/instance_0/batch_0/attempt_0/stats.csv experiments/bsbm/benchmark/evaluation/ideal/q06/instance_0/batch_0/provenance.csv
  5. Validate with this command:

    java -classpath "engines/FedX/target/FedX-1.0-SNAPSHOT.jar:engines/FedX/target/lib/*" org.example.FedX experiments/bsbm/benchmark/evaluation/ideal/config/batch_0/ideal.conf experiments/bsbm/benchmark/generation/q06/instance_0/injected1.sparql experiments/bsbm/benchmark/evaluation/ideal/q06/instance_0/batch_0/attempt_0/results.txt /dev/null experiments/bsbm/benchmark/evaluation/ideal/q06/instance_0/batch_0/attempt_0/query_plan.txt experiments/bsbm/benchmark/evaluation/ideal/q06/instance_0/batch_0/attempt_0/stats.csv experiments/bsbm/benchmark/evaluation/ideal/q06/instance_0/batch_0/provenance.csv cd /GDD/RSFB ; /usr/bin/env /usr/lib/jvm/java-11-openjdk-amd64/bin/java -agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=localhost:40931 @/tmp/cp_2cvz1ipwrnsd7evff02c5lbcc.argfile org.example.FedX
mhoangvslev commented 1 year ago

The query optimisation starts here: https://github.com/eclipse/rdf4j/blob/main/tools/federation/src/main/java/org/eclipse/rdf4j/federated/FedXConnection.java#L131

try {
    federationContext.getMonitoringService().monitorQuery(queryInfo);
    FederationEvaluationStatistics stats = new FederationEvaluationStatistics(queryInfo, dataset);
    query = strategy.optimize(query, stats, bindings);
} catch (Exception e) {
    log.warn("Exception occured during optimization (Query: " + queryInfo.getQueryID() + "): " + e.getMessage());
    log.debug("Details: ", e);
    throw new SailException(e);
}