Welkom bij PUG Netherlands

Terugblik: PUG-bijeenkomst 7 mei 2026 in Breda

Terugblik: PUG-bijeenkomst 7 mei 2026 in Breda

Op 7 mei 2026 vond in Kinepolis Breda een nieuwe bijeenkomst van PUG Netherlands plaats. Deze editie was gecombineerd met de Progress OpenEdge World Tour 2026 en stond in het teken van OpenEdge, security en moderne development tooling.

De ochtend begon met registratie, koffie en voldoende gelegenheid om bij te praten met bekenden uit de OpenEdge-community.

Na de opening en korte introductie van PUG en de sponsors IAP en Propredict, trapte Korak Schoone van Progress NL het inhoudelijke programma af met zijn sessie “PASOE – A Game of Memory”. Daarna volgden sessies van Richard Kelters over Zero Trust en Tudor Catana over VS Code extensions: CrossWayAI & ABLUnit Runner.

PASOE – A Game of Memory

Korak Schoone liet zien hoe PASOE met memory omgaat en vooral waarom het belangrijk is om dat niet als black box te behandelen. In een PASOE-instance draaien meerdere processen: een Java/Tomcat-proces voor de webapps en ABL Session Manager, plus één of meer Multi-session agents (_mproapsv) per ABL-applicatie. Juist die agents hosten de ABL-sessies en zijn doorgaans de grote memory users.

Een belangrijk punt uit de sessie: de memory footprint van een agent is niet simpelweg de optelsom van ABL-sessies. De agent zelf heeft overhead, met onder andere interne sessies/threads voor listener-, resource-management- en admin-taken. PASOE kan allocation/deallocation rapporteren via OEJMX of de oemanager REST API, maar niet alles wat onderliggend gebeurt — zoals memory in third-party libraries of system calls — valt daar volledig onder.

De kern van het verhaal zat in de heap. Een agent vraagt dynamisch memory aan bij het OS. Dat memory wordt vervolgens verdeeld over ABL-sessies. Wanneer een sessie stopt, komt memory terug in de heap van de agent, maar niet automatisch terug naar het OS. Door heap-fragmentatie kan het proces dus groot blijven, ook nadat de piekbelasting voorbij is. De slide vatte het bruut goed samen: “The Heap will grow to meet the highest demand, but then never (or rarely) shrink back.”

Een extra valkuil is OS-COMMAND en INPUT/OUTPUT THROUGH op Linux/Unix. Die kunnen fork() en exec() triggeren, waarbij een child process ontstaat met de actuele memory footprint van de agent — niet alleen van de ene ABL-sessie. Bij meerdere gelijktijdige sessies kan dat memorygebruik dus hard escaleren. De praktische aanbeveling: minimaliseer dit gebruik, of configureer PASOE meer “classic style” met meer agents en minder sessies per agent om de footprint per agent te beperken.

Voor memory leaks lag de nadruk niet op “PASOE lekt”, maar op applicatiegedrag: persistent procedures die niet worden verwijderd, MEMPTR variabelen die niet worden gereset, circulaire objectreferenties, dynamisch gemaakte buffers/temp-tables/datasets die blijven hangen, en impliciet aangemaakte data-objecten. De remedie blijft ouderwets saai maar effectief: opruimen wat je maakt. Gebruik FINALLY, DELETE OBJECT, expliciete widget-pools, en ruim tijdelijke data zoals MEMPTR en LONGCHAR op.

Voor analyse kwamen drie tools voorbij:

- OEJMX / oemanager
- OpenEdge.Core.Util.LeakCheck
- OpenEdge Memory Profiler

LeakCheck is een logfile parser op basis van DYNOBJECTS, sinds OpenEdge 12.6 onderdeel van de release. De OpenEdge Memory Profiler richt zich op memory consumption binnen specifieke ABL-sessies en is beschikbaar vanaf OpenEdge 12.8.3+. Daarmee wordt memoryanalyse eindelijk minder “gevoel” en meer meetbaar.

Zero Trust in een OpenEdge-landschap

Richard Kelters presenteerde een concrete case: Zero Trust @ COA. De situatie: de GUI for .NET frontend-applicatie IBIS moest bij COA voldoen aan een Zero Trust architectuur tijdens de beweging van Citrix naar Azure.

IBIS is geen klein speeltje. De applicatie ondersteunt duizenden actieve gebruikers, draait op meerdere databases en PASOE-instances, en bevat duizenden classes plus een flinke hoeveelheid procedurele code, database triggers, Smart Data Objects en service interfaces. De case was dus interessant omdat hij juist niet begon met een greenfield-architectuur waar alles netjes opnieuw ontworpen kon worden.

Moderne tooling in VS Code: CrossWayAI & ABLUnit Runner

Tudor Catana liet twee VS Code extensions van Wayfare zien: ABLUnit Runner en CrossWayAI. De sessie begon breder dan alleen tooling: VS Code is duidelijk de richting waarin veel developer workflows bewegen. Progress sponsort inmiddels officieel de OpenEdge ABL extension voor VS Code, ontwikkeld door Riverside Software. Tegelijk werd terecht benoemd dat VS Code niet alles vervangt; AppBuilder blijft bijvoorbeeld een aparte categorie.

Community, koffie en gesprekken

Naast de presentaties was er natuurlijk ook ruimte voor ontmoeting. Juist dat blijft de waarde van PUG-bijeenkomsten: ervaringen uitwisselen met mensen die dezelfde technologie gebruiken, dezelfde migratievragen hebben en vaak ook dezelfde technische littekens meedragen.


De lunch bood ruimte om door te praten over OpenEdge, security, tooling en alles wat daar tussen zit.

De combinatie met de Progress OpenEdge World Tour maakte deze bijeenkomst extra interessant.

Dank aan sprekers en sponsors en Progress!

Dank aan de sprekers Korak Schoone, Richard Kelters en Tudor Catana voor hun bijdragen, aan de Sponsors en natuurlijk Progress, voor het mede mogelijk maken van deze bijeenkomst!

Graag ontmoeten we elkaar weer in het najaar!

Het PUG bestuur.