Skip to content

Class with compile issue cannot be fixed. #830

Closed

Description

@cambot

We have a business process with a compile issue. When I try to fix the compile with VS Code (Server mode), the class in Iris is reverted back to the broken version from my git checkout when I would expect the fixed version would be exported.

Basically, the signature of the OnRequest() method got changed to this:

Class Demo.MyProcess Extends Ens.BusinessProcess
{

Method OnRequest(pRequest As Ens.StreamContainer, Output pResponse As %RegisteredObject) As %Status
{
  /// business logic
  Quit $$$OK
}

When I save the class as-is, I get the following output:

exporting new version of Demo.MyProcess.CLS to C:\InterSystems\FHIR2025\mgr\repo\Demo\cls\Demo\MyProcess.cls

Compilation started on 08/04/2025 09:42:21 with qualifiers 'cuk'
Compiling class Demo.MyProcess
ERROR #5478: Keyword signature error in Demo.MyProcess:Method:OnRequest, keyword 'method argument/s signature' must be '%Library.Persistent,%Library.Persistent' or its subclass
  > ERROR #5030: An error occurred while compiling class 'Demo.MyProcess'
Detected 1 errors during compilation in 0.293s.

When I fix the method signature and save to recompile the class, I get the same log. It is as if the original version gets exported/imported/compiled before my updates are actually saved and compiled.

Work Around: I found that if I edit the file directly in the git checkout on my OS, then Iris imports that when I open (load) the file to view.

Module Version: 2.12.2
$zv: IRIS for Windows (x86-64) 2025.1 (Build 223U) Tue Mar 11 2025 18:14:42 EDT

Activity

  1. cambot commented on Aug 5, 2025

    @cambot
    ContributorAuthor

    For what it's worth, I loaded the latest version of this module from the main branch (Commit cbcdc5b) and still see this issue.

  2. self-assigned this
    on Aug 6, 2025
  3. isc-pbarton commented on Aug 8, 2025

    @isc-pbarton
    Collaborator

    I'm still trying to figure out a fix. A workaround for now is to turn off the "Decompose Productions" flag in settings, fix the class definition, compile, and turn the "Decompose Productions" flag back on.

    The root cause is ##class(SourceControl.Git.Production).IsProductionClass() which should be doing a preview load of the class from disk into a process-private global. Instead it is doing a real load and overwriting the class definition.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions