WAGED simulation API doesn't provide actual reason for the assignment calculation fail

Aperta
#2,167 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
java

Direzione di ricerca

Inizia da HelixUtil.getTargetAssignmentForWagedFullAuto() e segui il percorso di errore di getIdealAssignmentForWagedFullAuto() per vedere dove FAILED_TO_CALCULATE viene sostituito dalla HelixException generica. Esamina il contesto correlato nella pull request #1701. Il lavoro è completato quando l’util espone l’errore di calcolo effettivo invece del solo messaggio generico.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug
Describe the bug

I've tried to using HelixUtil.getTargetAssignmentForWagedFullAuto() to check capacity availability for a resource before adding it to the cluster (refer to the below snippet). However, it ends up in a HelixException with getIdealAssignmentForWagedFullAuto(): Calculation failed: Failed to compute BestPossibleState! as the cause. Is it because the cluster doesn't have enough capacity for the resource? If so, is there a way to get actual FAILED_TO_CALCULATE exception propagated here, instead of having a generic cause?

To Reproduce
try {
        IdealState newIS = getIdealState(resourceName);
        ResourceConfig newResourceConfig = new ResourceConfig(resourceName);
        // Set PARTITION_CAPACITY_MAP
        Map<String, String> capacityDataMap = ImmutableMap.of("CPU", "20", "MEMORY", "60");
        newResourceConfig.getRecord().setMapField(ResourceConfig.ResourceConfigProperty.PARTITION_CAPACITY_MAP.name(),
                Collections.singletonMap(ResourceConfig.DEFAULT_PARTITION_KEY, OBJECT_MAPPER.writeValueAsString(capacityDataMap)));

        // Read existing cluster/instances/resources info
        final ZKHelixDataAccessor dataAccessor = new ZKHelixDataAccessor(CLUSTER_NAME, 
                new ZkBaseDataAccessor.Builder<ZNRecord>().setZkAddress(ZK_ADDRESS).build());
        ClusterConfig clusterConfig = dataAccessor.getProperty(dataAccessor.keyBuilder().clusterConfig());
        List<InstanceConfig> instanceConfigs = dataAccessor.getChildValues(dataAccessor.keyBuilder().instanceConfigs(), true);
        List<String> liveInstances = dataAccessor.getChildNames(dataAccessor.keyBuilder().liveInstances());
        List<IdealState> idealStates = dataAccessor.getChildValues(dataAccessor.keyBuilder().idealStates(), true);
        List<ResourceConfig> resourceConfigs = dataAccessor.getChildValues(dataAccessor.keyBuilder().resourceConfigs(), true);

        // Do we need add this?
        idealStates.add(newIS);
        resourceConfigs.add(newResourceConfig);

        // Verify that utilResult contains the assignment for the resources added
        Map<String, ResourceAssignment> utilResult = HelixUtil
                .getTargetAssignmentForWagedFullAuto(ZK_ADDRESS, clusterConfig, instanceConfigs,
                        liveInstances, idealStates, resourceConfigs);
        
    } catch (HelixException e) {
        // Getting "getIdealAssignmentForWagedFullAuto(): Calculation failed: Failed to compute BestPossibleState!"
        // means not enough capacity?
    }
Expected behavior
  • Get actual FAILED_TO_CALCULATE exception propagated to the util, instead of having the generic HelixException.
Additional context
Lingua principale
Java
Stelle
505
Fork
258
Merge medio
4g 20h
PR unite (30g)
3

Preparare l'ambiente

  • Nessun Dockerfile né file Docker Compose
  • Ha un modello di pull request
  • Nessuna guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di apache/helix

Tutte le issue di apache/helix

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.