I have a question about a strange happening with c...
# cfml-general
p
I have a question about a strange happening with commandbox that started last week. My application makes a lot of ajax calls to cfcs. Just this past week the ajax calls all started giving this 500 error only in the commandbox development environment, not on production or standard installs.
500 Function getClosedDays does not support fuseaction as an argument in C:\Projects\fitnesscollective-v1\fitnesscollectivept_v1\scheduler\components\fullcalendar.cfc
The ajax url was a get to the following URL:
<http://127.0.0.1:49456/scheduler/components/fullcalendar.cfc?method=getClosedDays&clientID=0&start=2025-05-18T00%3A00%3A00-07%3A00&end=2025-05-25T00%3A00%3A00-07%3A00>
The get was made from this URL:
<http://127.0.0.1:49456/scheduler/index.cfm?fuseaction=sessions>
This one has me baffled. I've pulled up other apps and they're doing the same thing. I've tried different browsers and it's the same result. Any ideas?
Here's the stack trace
Copy code
coldfusion.runtime.UDFMethod$IllegalArgumentException: Function getClosedDays does not support fuseaction as an argument in C:\Projects\fitnesscollective-v1\fitnesscollectivept_v1\scheduler\components\fullcalendar.cfc
	at coldfusion.runtime.UDFMethod.validateArguments(UDFMethod.java:520)
	at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:474)
	at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:450)
	at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:727)
	at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:980)
	at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:762)
	at coldfusion.filter.ComponentFilter.invoke(ComponentFilter.java:261)
	at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:606)
	at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:43)
	at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)
	at coldfusion.filter.PathFilter.invoke(PathFilter.java:162)
	at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:97)
	at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
	at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
	at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:60)
	at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
	at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
	at coldfusion.xml.rpc.CFCServlet.invoke(CFCServlet.java:167)
	at coldfusion.xml.rpc.CFCServlet.doGet(CFCServlet.java:324)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:503)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:590)
	at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:311)
	at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
	at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:46)
	at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:47)
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at org.cfmlprojects.regexpathinfofilter.RegexPathInfoFilter.doFilter(RegexPathInfoFilter.java:54)
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
	at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
	at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
	at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
	at runwar.undertow.SSLCertHeaderHandler.handleRequest(SSLCertHeaderHandler.java:161)
	at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
	at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
	at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
	at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
	at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
	at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
	at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)
	at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)
	at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)
	at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)
	at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
	at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
	at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)
	at io.undertow.servlet.handlers.ServletInitialHandler.handleRequest(ServletInitialHandler.java:175)
	at io.undertow.server.handlers.HttpContinueReadHandler.handleRequest(HttpContinueReadHandler.java:69)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at runwar.undertow.WelcomeFileHandler.handleRequest(WelcomeFileHandler.java:49)
	at io.undertow.server.handlers.PathHandler.handleRequest(PathHandler.java:104)
	at runwar.undertow.SiteDeployment$1.handleRequest(SiteDeployment.java:169)
	at io.undertow.predicate.PredicatesHandler.handleRequest(PredicatesHandler.java:141)
	at io.undertow.predicate.PredicatesHandler.handleRequest(PredicatesHandler.java:141)
	at io.undertow.predicate.PredicatesHandler.handleRequest(PredicatesHandler.java:113)
	at io.undertow.server.handlers.DisallowedMethodsHandler.handleRequest(DisallowedMethodsHandler.java:62)
	at io.undertow.predicate.PredicatesHandler.handleRequest(PredicatesHandler.java:113)
	at io.undertow.server.handlers.encoding.EncodingHandler.handleRequest(EncodingHandler.java:72)
	at runwar.undertow.LifecyleHandler.handleRequest(LifecyleHandler.java:143)
	at runwar.undertow.SiteDeployment$4.handleRequest(SiteDeployment.java:360)
	at io.undertow.server.Connectors.executeRootHandler(Connectors.java:395)
	at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:854)
	at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
	at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)
	at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
	at java.lang.Thread.run(Unknown Source)
r
I just had the same issue. Its a change in the latest Coldfusion update
You need to add a jvm argument.
*-Dcoldfusion.runtime.remotemethod.matchArguments=false*.
Update 14
I think in commandbox server,json it would look like this
Copy code
{
  "jvm": {
    "args": [
      "-Dcoldfusion.runtime.remotemethod.matchArguments=false"
    ]
  }
}
p
Thank you! That was it.
👍 1
d
Gotta read the release notes before you install cf updates, even in dev 🙂
r
Yup! had to restore a server this morning because i didnt do that!
p
True, in this case though, even in reading the release notes I still wouldn't have known it would cause this behavior. The URL I'm requesting for the CFC doesn't contain the URL variable it's sending me back in the error so I'm not sure why there is a hidden URL variable in the error. I suspect it's caused by the fusebox framework but I'll have to dig further.
d
You have to declare all arguments to methods with remote access enabled, and it's enforced even if the actual method call isn't remote.
Not sure what URL anything has to do with it, may not be this issue after all.
p
The error was "method doesn't support 'fusection' as an argument. The URL I used in the get statement doesn't contain the 'fuseaction' argument. So it must be deeper somewhere.
d
does it have access="remote"?
n
@PK We're dealing with something similar (also using fusebox). In this case, we had paramed a url variable in Application.cfc and noticed it showing up in the error dump like this: url - struct method | getStatusForTimer returnformat | json showerrors | [empty string] That last argument (showerrors) set to "" in Application.cfc seems to be the culprit, even though it is not mean to be passed along in the ajax call.
p
@Dave Merrill It does. Any of the functions I need to call through Ajax are set that way.
Thanks @nickg I'll investigate that.
n
@PK See if you can include a dump of url scope in addition to the stack trace when the error happens. that might show you the extra arguments(s)
m
I had one of my fellow devs run into this when they had used <cfset url.blah = true> in like onRequestStart or something like that... then it started to consider blah one of the arguments