Release Notes ProTop 328-rc1 (March 2026)
These are public change notes for ProTop 328-rc1, which was not officially released but exists as a downloadable entity. These changes are included in the officially released ProTop 329. They include changes, fixes, and additions to the client-side code that monitors your OpenEdge resources and sends metric data and alerts to your ProTop portal.
Here's how to get the latest version of ProTop!
| Change Type | Description |
| Bug fix |
Conflicting Alertable field names in dc/appmon.p and dc/pasoe.p. If you are using Classic Application Servers, you are likely using alertable fields appName, appNote, and or appStatus in your alert.*.cfg files. Please be sure to correct these names accordingly to continue receiving alerts as expected. |
| Feature Update |
CAUTION: Enhanced “trxmon”. Updated TRXMON to run on both UNIX and Windows. Additionally, it now generates alerts rather than sends emails, so everything passes through the portal. A new wstub/trxmon.bat has been created along with wstub/disconnect*.bat. The util/trxmon.p utility has been updated to run on both UNIX and Windows. The estub/trxmon.cfg config file has been modified to remove email configuration options. |
| Feature | Added ABLUnit - A framework for implementing “unit tests” in OpenEdge ABL code bases to improve code quality by building declarative testing into the development process. |
| Feature | Update Service Telemetry to Show Transports. |
| Feature | Invoke a menu when ProTop RT is invoked without an argument. |
| Feature | Replace Global Shared Variables With ProTop Properties. This feature implements a “new style” configuration file: etc/protop.cfg. This configuration follows the standard hierarchy from most general to most specific, but unlike old-style configurations, the files are additive. Rather than the most specific file “winning” and being used solely, the entries in the files along the way are accumulated. In the case of multiple entries for a property, the last entry wins. This means that customization is more straightforward – detailed configuration only needs to specify changes and additions. The “api key” feature uses this new-style configuration approach. Changes to the config files, or the addition of previously missing detailed config files, will be noticed, and the properties will be updated in near real time. There is a user-configurable delay to prevent excessive resource consumption. Previously, most shared variables were only settable at startup by way of the bin/localenv mechanism. Changes made post-startup were not seen by a running pt3agent or by other ProTop client processes. Now, changes in etc/protop.cfg will be seen and set in real time. |
| Feature | Minimum Time to Accept Input (ProTop RT). Under heavy system load, the ProTop “RT” (real-time) client will sometimes take more than the sample interval to collect a sample. When this occurs, the pause for input (to give commands to the program) is, effectively, eliminated. This appears to the user as if commands are impossible in this scenario. This feature allows users to configure a minimum length for that pause so that there is always an opportunity to interact with RT even under heavy load. The feature is controlled via the realTimeMinDelay property in etc/protop.cfg. The default is two seconds; the minimum is one second. |
| Feature | Data Collectors That Do NOT Need a DB Connection. Not all data collectors collect data about OpenEdge databases. This is important because a pt3agent that starts with no connected database will ONLY allow data collectors from that list to execute. Thus, if you have an agent that is monitoring something such as PASOE (which does not require a db connection) and you wish to add Service Telemetry, you will probably be confused about why Service Telemetry fails to execute. The list of data collectors that do not require a db connection was previously hard-coded. This update moves that list to the nodbDataCollector property defined in the etc/protop.cfg configuration file. Default values are: nodbDataCollector apsv.p,dbid.p,df.p,netstat.p,osinfo.p,pasoe.p,appmon.p,svctelemetry.p |
| Feature | Task Scheduler Should Not Block While Running a Task. The task scheduler runs within the context of the “dbmonitor” process. Because dbmonitor controls starting and stopping agents for resources, dbmonitor must not block for any substantial period of time, since that would prevent timely action on .lg messages, launching or stopping pt3agents, or acting on outages. This requires modification of the task scheduler, which currently, by default, blocks when a process is run and waits for it to complete. In practice, most scheduled tasks are set up to run in the background without blocking, but the current code requires the user to remember to add an “&” to the command line to achieve this. There are no instances where a user would actually deliberately desire to block until the task completes, so modifying the scheduler to put all scheduled tasks into the background automatically should be harmless. |
| Bug fix | Maintenance.bat fixed to handle all inputs and internal quoting correctly. |
| Bug fix | Maintenance.p has been updated to enforce the numeric format as we do in other ProTop utilities. So as of ProTop 328 maintenance.sh (or .bat) should no longer be sensitive to the -d, -numsep, or -numdec parameters that might be in $DLC/startup.pf or any of the etc/protop*.pf parameter files. |
| Feature | pctLastX and “xv” extents (also released and updated in ProTop 327.1) For purposes of the pctLastX alert (percent full, last variable extent): An “uncapped”, but pre-extended, extent (an “x” extent), the pre-extended portion is treated as if it were a fixed extent. If an extent is pre-extended to 1GB and pctLastX is set to fire at 50% an alert should be thrown at 512MB. A “capped” variable extent (an “xv” extent) is treated as if it were a fixed extent, and the cap is considered part of the allocated space. Thus, if an extent is capped at 2GB, we treat that as if it were a 2GB fixed extent - even though, from the OS perspective, it is growing. We do this because, from the db perspective, when it hits that cap, things will behave the same as if it were fixed. That is, if there is no “pure variable” at extent next in line the db will crash. So if pctLastX is set to alert at 50% when that capped extent grows to 1GB, an alert should fire. In the case where an extent has been pre-extended, AND it has a cap, we only care about the cap. No alert will be fired for growing beyond the pre-extended size. |
| Bug fix | User Experience Client Server Fails When DB is Remote. The getResource() function in bin/protopenv was updated to recognize that a resource is remote and behave accordingly. |
| Feature | User Experience Client Server – Local DLC Setting Differs From Server. It has been determined that ProTop is functioning as designed and that the solution to this problem is to use bin/zipenv.[sh|bat] to override the PT3DLC environment variable. |
| Feature |
Create alerts and HC findings specific to B2 issues. Check _ActBuffer._Buffer-LRUEnabled field to see whether the LRU replacement algorithm has been enabled. |
| Feature |
Change when the automated health check (HC) flags -omsize as an issue. Added a new field, tt_configuration.omsizeExcess, to track the “extra” -omsize entries. This field is available for alerts and health checks, but no alerts currently use it. |
| Bug Fix | Missing PARAM in hc.sh. Updated bin/hc.sh to correctly set $PARAM. |
| Feature | Enhance xrange.p to include LOBs. ProTop RT startup will now show LOB range data along with table and index range data and settings if the relevant ranges are inadequate or when the “T” (upper case) command is issued. Additionally, the generated example tmp/*.range.pf file now includes -lobrangesize and -baselob suggestions. |
| Feature | Excessive message frequency in dbmonitor.log. The default logging threshold (aka dbgMode) was changed from 2 to 5. |
| Feature | zAppNote is not working. Existing but incomplete, this fix enables the enhancer for use in alerts. |
| Feature | HC is not reporting AIW as not running. Updated estub/healthcheck.cfg to include an alert for AIW not running. |
| Bug fix | Misdirected Profiler Output. Profiler output ("y") was going to "tmp"; it is now going to "rpt" if that directory exists (rpt is a default directory). |
| Bug fix | ProTop RT “Backup Age” is improperly highlighted. Added filters to highlight.cfg to better control the detection of problems. |
| Bug fix | Correct issues with OS-GetWinSize(). Code changed to avoid specific logic with versions of OpenEdge older than 11.7. |
| Feature | Guard calls to Jolokia in dc/pasoe.p with a "localenv" property. Not everyone uses Jolokia, so we added the following configuration option in bin/localenv:
# export AGENT_METRIC_PROVIDER=none # Provider for PASOE agent metrics, possible values [jolokia | oemanager | none] |
| Feature |
Review and update lib/ptprops.p. This relates to the “&” command in ProTop RT. That command shows the values of ProTop “properties” and allows many of them to be changed in real-time. (This is primarily helpful when debugging.) For the most part, this involves cross-checking that variables documented in ustub/localenv.x and implemented with pt_* global shared variables are being exposed on the ptprops screen. Most of these variables are being initialized in lib/protop-cfg.p Most such variables should at least be displayed. Likely, most should also be updateable. The ptprops screen is getting crowded, so a 2nd “page” was created. Changes to property values are not persisted and do not affect other running processes. |
| Feature |
Track Execution Time of Data Collectors. Add a field to the data collector temp tables to track the time it takes to collect the data. This will enable us to self-monitor for unexpected issues with data collection. The only user-visible evidence of this feature at this time is that startup messages now report how long a data collector takes to initialize (in milliseconds). |
| Feature |
Comments added to dc/b2.p to clarify the meaning of bpUnused. Updated the meaning of bpUnused and also added comments to document arguments to update_xstat(). No user-visible impact. |
| Feature |
Add -memcheck and -dbcheck to healthcheck. Added appropriate “not enabled” alerts to estub.source/healthcheck.cfg and supporting text to recommend4.dat. (Such alerts are automatically encrypted and promoted during the build process.) |
| Feature |
Added the Windows version of the logmon script. Created a BAT file equivalent to logmon.sh so that the log monitor utility can be run on Windows. |
| Feature |
ProTop self-monitoring. Create appropriate entries in schedule.cfg and logmon.cfg to enable ProTop to monitor its own tmp/*.debug files. Self-monitoring should send an alert to the portal when errors appear in the tmp/*.debug files. A new log monitoring type, log_protop, has been created. The behavior of log_protop is controlled through etc/log_protop.cfg. Before this update, the rule sets for all log_* logmon types were processed in an undefined order. This update now processes rules in the order that they appear in the log_*.cfg file. If a matched line processes ruleAction = “ignore”, then no additional rules will be applied to that line. Otherwise, all rules are applied, in order, to matching lines. |
| Feature |
Create a getOEVersion() function and replace proversion(). ProTop sometimes needs to compare the proversion() function output with strings like “10.1C04” and “10.2A02”, but proversion() is not that granular. Proversion() only provides major and minor version numbers, e.g. “10.1C” and “10.2A”. In 11.2+, proversion(1) provides more granular info like service pack, hotfix, and build. But proversion (without a mode) still only provides major and minor. Currently this new function is only used for log messages and to detect oe10.1c and oe10.2a when determining if the ai roll forward will fail at 65535 in ssg/sausage50.p |
| Security fix |
Modify util/areainfo.p to remove LOOKUP() from the WHERE clause. SonarQube flagged this as “critical”. Replaced the LOOKUP with an equivalent set of OR clauses in the WHERE. FYI - util/areainfo.p is a stand-alone report. |
| Feature |
Add ProTop and OpenEdge version to the alert body and add a maintenance alert nag limiter. |
| Feature |
Add app server alerts to alert.cfg. # Sum of Busy, locked, and sending agents as a percentage of MaxSrv |
| Feature |
Update wstub/logmon.bat to include debugging logic related to getresource.bat. Added a section to echo variable settings when “set PT3DEBUG=TRUE” is activated. Added additional logging messages for startup variations (with or without a friendly name). |
| Bug fix |
zOldTRXDetails.sh is broken for certain Linux releases. Resolution: the “tail -1” suggestion was implemented. |
| Bug fix | Add a third state, blank, to the "BX" column in the Storage Areas panel. Buffer pool assignment is not an attribute of all storage areas. It is only an attribute of data storage areas (i.e., areas with _area-type = 6). For others, including but not limited to the BI and AI areas, that column now shows a blank. |
| Bug fix |
"CPU MHz" is zero in RHEL 9.x. This has been corrected and now reports CPU speed as intended. |
| Big fix |
Error: "No _AreaStatus record is available. (191)" is being reported. Changed to use a distinct buffer within aiInfo(). Modified getAreaStatus() to no longer call aiInfo(). |
| Feature |
Note when an audited DB has active audit indexes. When a database has OE Auditing enabled, the production database is NOT supposed to have the audit reporting indexes active and enabled. (Active indexes are a performance penalty on writes.) Best practice is to export audit data from production to a reporting database where the audit indexes are available and active. |
| Feature |
Create a field, alerts, and a report for inactive application indexes. Created a field (in tt_configuration) to track inactive application indexes and sample alerts to go with that field. The field name is “tt_configuration.inctveAppIdx”. Created a stand-alone report, util/inactiveappidxrpt.p to list inactive application indexes. |
| Feature |
Create a ProTop Windows compilation bat file for dbauthkey support. The process was manual for Windows; this new feature automates that manual process. The new wstub/ptcompile.bat is the Windows version of ustub/ptcompile.sh. |
| Feature |
getResource() argument should be optional. The getResource() function in protopenv now treats $1 as an optional parameter, as utilities (logmon is one) do not necessarily use a "friendly name". |