google / google/s2-geometry-library-java
Infinite loop in coverer builder
- Vorherrschende Sprache
- Java
- Sterne
- 587
- Forks
- 231
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
```
S2RegionCoverer coverer = S2RegionCoverer.builder()
.setMinLevel(20)
.setMaxLevel(10)
.build();
S2Cap cap = S2Cap.fromAxisAngle(new S2Point(1, 0, 0), S1Angle.degrees(5));
S2CellUnion covering = coverer.getCovering(cap); // OutOfMemoryError
```
The coverer keeps trying to refine cells to reach minLevel(20), but maxLevel(10) prevents going past level 10, so it never satisfies the min level constraint and spirals until the JVM runs out of heap. Could be prevented by checking that min < max
Beitragsleitfaden
Rechercherichtung
Beginne bei S2RegionCoverer.builder und verfolge, wie minLevel und maxLevel gespeichert und von getCovering verwendet werden. Reproduziere die bereitgestellte Konfiguration und untersuche die vorhandenen Builder-Validierungs- oder Covering-Tests. Die Aufgabe ist abgeschlossen, wenn verhindert wird, dass die ungültige Level-Kombination in die Endlosschleife zur Verfeinerung gelangt, und die Regression durch einen Test abgedeckt ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- java
- Bereich
- backend
- Issue-Typ
- Bug
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Aktivitätsstatus
- Ruhig
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 68/100