TopLogic - the automated application engine
  • Releases
  • Dokumentation
  • Github
  • Discord
  1. Home
  2. Releases
  3. TL_8.0.0-alpha7
  4. #29383

8.0.0-alpha7
TopLogic Release

2026-07-30

enhancement

critical
#29088
Model-based access rights
#29108
Lightweight UI definition layer (TL Views) based on React UI-Components
major
#28694
Beschreibung von Modellteilen als formatierter Text (Rich Text)
#28708
Standard-Selektion in (Baum-)Tabellen und Grids per TL-Script berechenbar machen
#29102
Add com.top_logic.layout.react module for React/SSE integration
#29221
Automatische Bestimmung möglicher Berechtigungskonfigurationen
#29349
XML-Parse-Funktionen für TL-Script über XMLImporter
#29374
TL-Script: gzip()
#29389
Code-Completion für Variablen ($) im TL-Script-Editor
#29396
Conversation display for TL Views: object-list element, file chips, card panels
#29399
Info-Service-Meldungen: unten statt oben anzeigen und beim Überfahren mit der Maus fixieren
#29400
Introduce a first-class application "operation mode" service (OperationMode enum + ApplicationModeService)
minor
#29085
Neu einloggen bei Session Timeout anstatt Redirect zur Login-Seite
#29089
TL-Script-Funktionen log() und info() um wählbaren Meldungs-Level (INFO, WARN, ERROR) erweitern
#29195
Probleme mit HTML-Attributen und TL-Script
#29306
TL Script: dateFormat() should accept an explicit timezone to format Calendar values losslessly
#29382
Expose a public classpath-driven Workspace.getAppPaths overload
#29385
App archetype should scaffold a standard git-ignored local-credentials overlay (tl_config) by default
#29392
Transaktionsabbruch bei Nicht-2xx Response
#29398
Login-Maske: Statt "Name" besser "Benutzername"

defect

major
#29383
Dead SOCKET_APPENDER (Chainsaw, localhost:4445) in default logging config can stall logging and abort operations under load
#29384
TL-Script resetSequence/generateSequenceId build a different sequence id than SequenceDefaultProvider (suffix/context order), so they cannot reset a provider-managed sequence with a dynamic context
#29394
Editable tables in the React UI: generalized row-set bindings for tabular editing in forms
#29410
Attribut filename der Structured-Text-Bildablage case-sensitive (binär) speichern
#29419
Understandable save failures and form validation feedback in the React view layer
minor
#28816
Referenzwertige Attribute erzeugen Fehler nur bei SingleSelection
#29359
Unsinniger Tooltip bei einigen Hauptreitern
#29360
Sporadische Fehlermeldung im Log: "mainLayout" ist null.
#29361
Invalide Datenbankdefinition für Tag
#29363
Fehlende Validierung von Dialogen bei GOTOs zu Dialogen von unsichtbaren Parents
#29380
Kontextabhängige Auto-Nummerierung schlägt fehl, wenn Kontext und nummeriertes Objekt in einer Transaktion erzeugt werden
#29381
Doppelklick in Grafikkomponente funktioniert nicht zuverlässig
#29390
Teilbaum-Auswahl endet zu früh, wenn die unterste Ebene vom Ebenen-Filter nicht mitgezählt wird
#29393
URL-Routing der React-View-Schicht defekt: ForwardingReactContext delegiert getRouteManager() nicht
#29401
Bilder in einem Bild-Drop-Feld können nicht über das Browser-Kontextmenü kopiert/gespeichert werden
#29402
Baum-Selektion geht bei Aktualisierung der Ansicht (invalidate) verloren
#29412
Flaky TestDynamicComponentService.testIncrementalUpdates: asserts on asynchronous WatchService event after a fixed 10ms sleep
#29416
Anzeige des Änderungslogs schlägt fehl, wenn parallel Änderungen committet werden
#29420
FlowDiagram: Fehlerfall im row-wise Sub-Grid: subGridCols=2 und subGridStartCol=1
#29426
FlowDiagram: Text in PDF-eingebettetem Diagramm ist nicht selektierbar

task

major
#29407
Security-Scan: npm-Abhängigkeiten der React-Module aktualisieren
#29408
Security-Scan: httpcore5 anheben; pdfbox-/azure-Findings bewerten
minor
#29415
Slim down the repository CLAUDE.md and consolidate developer guidance into skills and FAQ articles
defect

major

#29383

Dead SOCKET_APPENDER (Chainsaw, localhost:4445) in default logging config can stall logging and abort operations under load

Migration

The default logging configuration (tl-core, WEB-INF/conf/logging/default.xml) defines a log4j2 Socket appender SOCKET_APPENDER targeting localhost:4445 (intended for a Chainsaw dev receiver). It is gated by the tl_developerMode=true SystemPropertyArbiter and referenced from <Root>, so in developer mode every logged event is routed to it.

When no receiver listens on 4445 (the usual case in developer mode), log4j's TcpSocketManager keeps a background Reconnector and buffers writes to the dead endpoint. Under a burst of log messages the socket's send buffer fills. Because the framework runs under log4j's AwaitCompletionReliabilityStrategy, the logging call then blocks and/or throws AppenderLoggingException from inside Logger.info(...). Two consequences:

  1. The whole logging pipeline stalls — the FILE_APPENDER stops receiving events, so top-logic.main.log freezes while the application keeps running.
  2. The failure propagates into the calling application code that issued the log call.

Observed impact: a long-running background operation that narrated progress via the TL-Script log(...) function (~3200 messages within a few seconds) had its logging pipeline break; the main log froze mid-run and the operation aborted silently at a clean batch boundary. Abbreviated stack:

org.apache.logging.log4j.core.appender.AppenderLoggingException: Error writing to TCP:localhost:4445: socket not available
    at org.apache.logging.log4j.core.net.TcpSocketManager.write(TcpSocketManager.java:264)
    at org.apache.logging.log4j.core.appender.SocketAppender.directEncodeEvent(SocketAppender.java:598)
    at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(...)
    at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:92)
    at org.apache.logging.log4j.core.Logger.log(Logger.java:187)
    at com.top_logic.basic.Logger.info(Logger.java:174)

A dead/optional dev appender must never be able to stall the file/console logging or break the application. Requested fix (any of):

  • Remove SOCKET_APPENDER from the default configuration; or
  • Make it robust: set ignoreExceptions="true", wrap it in an Async appender, and/or only enable it when a receiver on 4445 is actually reachable.

Workaround in an application: override WEB-INF/conf/logging/default.xml and drop the SOCKET_APPENDER appender definition and its <Root> AppenderRef.

Migration

Developers who forward log events to an external log viewer (e.g. Chainsaw listening on localhost:4445) must now enable the SOCKET_APPENDER explicitly: add

-Dtl_logReceiver=true

to the VM arguments of the launch configuration. Developer mode (tl_developerMode=true) alone no longer activates the appender. Host, port, and the serialized event format are unchanged. Developers who do not run a log receiver need to change nothing — the appender is no longer part of their logging configuration.

Note for opted-in users: the appender runs with ignoreExceptions="true"; while no receiver is reachable, events destined for the socket are dropped silently — file and console logging are unaffected.

  • Get Started
  • Github
  • Discord
  • Das Unternehmen hinter TopLogic
  • Softwareentwicklung heute
  • Kontakt

© Copyright – Business Operation Systems GmbH

  • top-logic.com
  • Nutzungsbedingungen
  • Impressum
  • Rechtlicher Hinweis
  • Datenschutz
  • EN
  • Login