We zijn een WebGISDR-fout aan het oplossen in een ArcGIS Enterprise 11.5-implementatie op Linux en hebben het probleem geïsoleerd tot de gefedereerde ArcGIS Notebook Server's exportSite operatie.
WebGISDR ontvangt HTTP 500 bij het exporteren van Notebook Server. We hebben het probleem onafhankelijk van WebGISDR gereproduceerd door een geauthenticeerd verzoek rechtstreeks naar de Notebook Server te sturen exportSite Admin API:
POST /notebooks/admin/exportSite
De operatie geeft consequent terug:
HTTP 500 - Exportoperatie mislukt. null
Met tijdelijke DEBUG-logging ingeschakeld, start Notebook Server succesvol:
- de exportoperatie;
- maakt
/opt/arcgis/notebookserver/temp/tmp-carbon-export-*; - maakt de tijdelijke configuratiewinkel;
- werkt de systeeminstellingen van de Admin API bij; en
- kopieert de siteconfiguratie naar de tijdelijke configuratiewinkel.
Direct daarna faalt de export met:
java.lang.NullPointerException
bij java.util.Objects.requireNonNull(...)
bij sun.nio.fs.UnixFileSystem.getPath(...)
bij java.nio.file.Path.of(...)
bij java.nio.file.Paths.get(...)
bij com.esri.arcgis.carbon.common.FileUtil.copyFile(FileUtil.java:652)
bij com.esri.arcgis.carbon.admin.SiteManager.exportSite(SiteManager.java:2027)
bij com.esri.arcgis.carbon.admin.rest.site.SiteResource.exportSite(SiteResource.java:329)
We hebben de tijdelijke tmp-carbon-export-* map vastgelegd voordat Notebook Server deze verwijderde. Deze bevat backupRestoreInfo.json en de substantiële Notebook Server-configuratiewinkel, inclusief machineconfiguratie, servermappen, notebook runtime-definities/manifests, beveiligingsconfiguratie, Web Adaptor-configuratie, certificaatkeystore en containermetadata.
Vergelijking van de live configuratiewinkel met de vastgelegde exportconfiguratiewinkel toonde alleen verwachte .lock bestanden die ontbraken; er ontbraken geen substantiële configuratiebestanden.
We hebben ook getest of het probleem verband hield met het feit dat dit een nieuw geïmplementeerde/voorheen ongebruikte Notebook Server is. Een Standaardnotebook werd gemaakt, opgeslagen en succesvol uitgevoerd. Dit initialiseerde een draaiende Notebook-container, werkruimte-artifacten en vulde Notebook Server-systeemjobrecords.
Als aanvullende functionele test voerde het notebook succesvol ArcGIS API for Python-code uit met:
from arcgis.gis import GIS
gis = GIS("home")
print("Verbonden met:", gis.properties.name)
print("Portal-URL:", gis.url)
print("Ingelogd als:", gis.users.me.username)
print("Portal-versie:", gis.properties.currentVersion)
Het notebook heeft zich succesvol geauthenticeerd bij het gefedereerde Portal en gaf terug:
Verbonden met: ArcGIS Enterprise
Portal-URL: https://gis.xyz.com/portal
Ingelogd als: siteadmin
Portal-versie: 2025.1
Dit bevestigt dat normale uitvoering van Notebook Server-containers, uitvoering van ArcGIS API for Python, Portal-authenticatie en communicatie met het gefedereerde Portal functioneren.
Na het maken, opslaan en uitvoeren van het notebook hebben we de directe Notebook Server exportSite operatie opnieuw getest. Deze faalt nog steeds identiek met:
HTTP 500 - Exportoperatie mislukt. null
Daarom lijkt de fout niet veroorzaakt te worden door het ontbreken van gebruikersnotebooks, gebrek aan initialisatie bij eerste gebruik, onvermogen om Notebook-containers te starten of onvermogen van notebooks om met Portal te communiceren.
We hebben ook gevalideerd:
- Portal 192; Notebook Server federatie/configuratie
- Notebook Server 192; geconfigureerde Portal-URL-connectiviteit
- TLS-connectiviteit
- succesvolle opstart en uitvoering van Notebook-container
- succesvolle uitvoering van ArcGIS API for Python en Portal-authenticatie
- geregistreerde Notebook Server-mappen en paden
- bestandsysteemrechten en beschikbare schijfruimte
- Notebook Server certificaat/keystore-artifacten
- aanmaak en gebruik van de tijdelijke exportmap
- succesvolle aanmaak van
backupRestoreInfo.json - succesvolle kopie van de substantiële Notebook Server-configuratiewinkel
De fout lijkt daarom op te treden nadat de siteconfiguratie is gekopieerd, wanneer SiteManager.exportSite()' FileUtil.copyFile()' aanroept met wat lijkt een null-pad te zijn.