2.4

11 minutes to read Download PDF Edit

2.4.6

2.4.6.2

  • Improved support for Oracle databases.
  • Ticket 5634: datepicker with language set to German did give an incorrect validation. *Ticket 5574: fixed rendering of TemplateGrid. In certain cases the items dissapeared when clicking the search button (a known IE rendering issue).
  • Ticket 5751: in a specific case it was possible to run two microflows concurrent while concurrent execution was disallowed.
  • Ticket 4133: fixed report date range selector Internet Explorer Issue
  • Ticket 5590: it is now possible to configure the session timeout in application.conf - see this example:
    • ‘ClusterManagerActionInterval’: determines how often the system ClusterManagerAction is executed (checks session timeouts, xas timeouts, unblocks users and updates statistics).
      • Value is in milliseconds. The session timeout depends on the ClusterManagerAction interval, it’s 2*ClusterManagerActionInterval.
      • For example, when ClusterManagerActionInterval is 300000 milliseconds (5 minutes, default), the session timeout is 600000 milliseconds (10 minutes).

2.4.6.0

  • Fixed: CSS of MxWindow (popup) is not loaded on-the-fly anymore, but along with all other css, defined in your theme’s base file. This is to give your custom CSS the right priority compared to the default Mendix CSS.
    • Make sure this line is added to the base-XX.css file, below the comment that says “load mendix widget styles”: @import “../mxclientsystem/mendix/widget/styles/MxWindow.css”;
  • Ticket 4116: small refresh fix for grids in tabpages in very specific cases.
  • Ticket 4000: LDAP improvements (mapping of additional fields, create objects inheriting from System.User).
  • Ticket 3994: Fixed: searching any date 1/1/1970 or before in a datagrid throws an exception.
  • Ticket 3973: Fixed: autonumber not incremented when using a create batch.
  • Ticket 3955: Fixed: error on using XPath queries containing negative numbers.
  • Ticket 3954: If an empty value is send to a published webservice for a boolean field the Mendix runtime will return a SOAP error instead of an internal exception.
  • Ticket 3934: Fixed: set conditional formatting on an input widget to enable/disable it (make it “read-only”) does not work for a reference selector.
  • Ticket 3922: Removed warning generated by XML mapping when using custom object handling and “ignore”
  • Ticket 3847: Fixed: problem with round function in reporting.
  • Ticket 3750: Fixed a focus problem with custom save, form validation all.
  • Ticket 3743: Fixed: reference attributes in inline-editing in DataGrids only show 10 records
  • Ticket 3666: Fixed: Template Grid does not display default image in image viewer
  • Ticket 3695: Fixed: Xpath using “not()” not executed correctly
  • Ticket 3669: Fixed: Report widget render wrong date
  • Ticket 3632: Added UTF-8 encoding setting to the header of a webservice request (everything was already UTF-8, but we didn’t explicitly define it in the header).
  • Ticket 3614: Fixed: 2 problems when removing items from a list while Iterating over that list (nullpointer and stopping iteration early).

2.4.5

Changed behavior

  • Ticket 3394: it is now possible to configure in application.conf which scheduled events should be executed. NOTE: default all scheduled events are executed in acceptance and production mode. The settings in the Modeler do not have effect in acceptance and production mode. Please make sure that all events need to be executed or use application.conf for specific settings! Two properties exist in application.conf:
    • ScheduledEventExecution (ALL, NONE, SPECIFIED) -> defaults to ALL
    • MyScheduledEvents (comma-separated list of events which should be executed on this instance)
      • Example:
        • ScheduledEventExecution = SPECIFIED
        • MyScheduledEvents = MyFirstModule.A, MyFirstModule.B
  • Ticket 3598: A close form activity in a microflow will not automatically trigger a rollback. You will have to use the rollback microflow activity if you want to rollback the object. Ticket 3518: Booleans should only have the values true or false. However, it was possible to set a Boolean value to empty, leading to unexpected behaviour. We have implemented the following fixes:
    • The XAS throws an exception if an exclusive split in a microflow encouters a Boolean with value ‘empty’.
    • Newly added attributes now get default values in the database on synchronisation for each existing row in the database (not only Booleans, but all attribute types).
    • Backward compatibility fix: all Boolean values which are empty in the database will be set to the default value.
    • We have added a consistency check in the Modeler preventing you from setting a Boolean attribute to empty. It is also not possible to compare a Boolean attribute with empty or NULL.
    • The following error will be logged if you at runtime (e.g. in Java code) try to set a Boolean member to NULL: java.lang.!IllegalArgumentException: Boolean member can not be set to null

LDAP improvements

  • multiple paths can be defined as import location for a single server
  • users are no longer automatically removed by ‘sync users’
  • group-role mappings are now saved during synchronizations
  • synchronization is now done per server
  • better error handling
  • default usernames now also support characters “@.-”
  • general improvements in the ldap configuration forms in the client
  • ldap now has proper default security

Performance improvements

  • When synchronizing your database with your model we now automatically enable READ_COMMITTED_SNAPSHOT for SQL Server databases.
    • This dramatically improves the client performance on SQL Server when having a lot of concurrent users.
    • It also solves the issue of seeing this message in the log: “Transaction (Process ID 60) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction”.
    • You can prevent the Mendix Runtime for changing this option by putting ReadCommittedSnapshot = false in application.conf.
  • Ticket 3549, 3588, 3547: Improved IE8 performance by running in IE7 compatibility mode (we will need to wait for a real browser from microsoft).
  • We have tuned Jetty (the build-in webserver we use) for a better performance when having a lot of concurrent users.
    • It is also possible to configure the following settings in application.conf to tune Jetty yourself:
      • ConnectorLowResourceMaxIdleTime
        • The maximum time in milliseconds that a thread can be allocated to a connection without a request being received while connector is low on resources (#used threads > (maxThreads - minThreads)). This limits the duration of idle persistent connections.
      • ConnectorMaxIdleTime
        • Same as ConnectorLowResourceMaxIdleTime, but when not low on resources
      • ConnectorRequestBufferSize
        • The request buffer size. Providing larger buffers for the HTTP Listeners allows more efficient processing and generation of content, with less blocking and content switching.
      • JettyMaxThreads
        • Limit to the number of threads that can be allocated to connections to the HTTP listener. This will effectively limit the number of simultaneous users of the server as well as the maximum memory usage
      • JettyMinThreads
        • The minimum number of unused threads to keep within the thread pool. A large number of unused threads will allow a server to respond to a sudden increase in load with little latency. More importantly, a HTTP listener is considered to be low on resources once its pool cannot allocate minThreads unused threads without execeeding max threads.
    • If Jetty runs low on resources we will log the following warning: Low on resources, maximum number of threads are in use (256). This means that the configuration is not suitable for the current load, so you need to change your configuration.
  • Database connection pooling improvements:
    • If the runtime cannot get a connection from the connection pool directly, the number of connections which are active and idle are logged. You will see this log message: “Database connections: 17 active, 5 idle.”
    • This helps you to tune the connection pool settings for high performance situations. You can configure the following options in application.conf:
      • ConnectionPoolingMinIdle
        • Sets the minimum number of objects allowed in the pool before the evictor thread (if active) spawns new objects. Note that no objects are created when numActive + numIdle >= maxActive. This setting has no effect if the idle object evictor is disabled (i.e. if timeBetweenEvictionRunsMillis <= 0).
      • ConnectionPoolingMaxIdle
        • Sets the cap on the number of “idle” instances in the pool.
      • ConnectionPoolingMaxActive
        • Sets the cap on the total number of active instances from the pool.
      • ConnectionPoolingMaxWait
        • Sets the maximum amount of time (in milliseconds) the method to create real new connections should block before throwing an exception when the pool is exhausted. When less than or equal to 0, the borrowObject() method may block indefinitely.
      • ConnectionPoolingTimeBetweenEvictionRunsMillis
        • Sets the number of milliseconds to sleep between runs of the idle object evictor thread. When non-positive, no idle object evictor thread will be run.
      • ConnectionPoolingSoftMinEvictableIdleTimeMillis
        • Sets the minimum amount of time an object may sit idle in the pool before it is eligible for eviction by the idle object evictor (if any), with the extra condition that at least “minIdle” amount of object remain in the pool. When non-positive, no objects will be evicted from the pool due to idle time alone.
      • ConnectionPoolingNumTestsPerEvictionRun
        • Sets the max number of objects to examine during each run of the idle object evictor thread (if any).
  • The performance of a retrieve activity with “first object only” checked has been improved.

Runtime fixes

  • Ticket 3533: All charts in report-widgets can now render UTF-8 characters.
  • Ticket 3550: Fixed very specific error in validation in combination with on change and focus.
  • Ticket 3453: Fixed: TemplaGrid did render 01-01-1970 instead of an empty string if a date was empty.
  • Ticket 3456: Fixed: aggregate numbers will not show up if the context is set to listen and no context is available.
  • Ticket 3413: Fixed: Datagrid searchfields in a popup render trough the search and reset button.
  • Ticket 3304: It is now possible to select, copy, and past the contents of an edit field with an input mask enabled.
  • Ticket 3168: Fixed: blocking progress bar is not triggered when double-click is used.
  • Ticket 3228: Fixed: tooltip text for a goto form and a reference selector as form is not consistent in Firefox and Internet Explorer.
  • Ticket 3569: Fixed: a float in a tooltip is rounded.
  • Ticket 3478: It is not possible to define the contains operator when searching on numbers. This was possible but it did not work at runtime.
  • Ticket 3560: Fixed: sometimes (mostly when running on SQL Server) a search for a date did also include the day after the selection.
  • Ticket 3408: Fixed: IE8 does not seem to pick up cookie updates correctly. IE8 did set double cookies leading to this log message written for each request: EXTERNALINTERFACE: Session failover from XASInstance: {1dcf3428-1aa4-4f83-beea-ed309449d109}; number of failovers for this session is now 1
  • Ticket 3530: Fixed: calling an open form activity for the same form in a loop did not result in multiple forms being opened.
  • Ticket 3528: Fixed: virtual attribute gives a stacktrace (specific issue).
  • Ticket 3494: Fixed: enumeration values are not shown in a nested tab if the dataview it belongs to is defined outside the parent tab control.
  • Ticket 3480: Fixed: using deleteBehaviour option in RemoveBatch raises an exception.
  • Ticket 3475: Fixed: console menu throws array out of bounds exception when using a certain sequence of options.
  • Ticket 3313: Improved error message for a microflow change activity (GUID and database ID are logged when something goes wrong during the edit of a reference).
  • Ticket 3369: VM argument added to create heap dump in case of OOE when running the XAS in a production environment.
    • Windows: in wrapper.conf template.
    • Linux: in “xas2” example script.
  • Ticket 3482, 3243: Fixed: invoke on all pages does not work if the datagrid contains just one row.
  • The XAS logger now uses the default line separator of the OS the XAS is running on (instead of always using Unix separators).
  • Library commons-pool upgraded from 1.4 to 1.5.3.
  • Ticket 3446: Improved error logging for scheduled events. The scheduled event name is added to the message (in addition to the microflow name).
  • Ticket 3542: XPath query //System.User[Active] is now allowed in addition to //System.User[Active=true()] (i.e. booleans can be checked for true without the ‘=’ operator).
  • Ticket 3224: Fixed: a reference selector rendered as dropdown, but with a form specified did give a runtime error.
  • Ticket 3536: Fixed: incorrect SQL joins for exist-expressions
  • Ticket 3481: Fixed: XPath constraint ‘not(association=id)’ mapped to incorrect SQL
  • Ticket 3428: Fixed: Incorrect XAS synchronization when derivation is added to an object and also to it’s new superobject.
  • Always write synchronization SQL commands to a file, also when the commands are not executed in case of errors.
  • Fixed: An exception occurs when tables or columns are renamed to each others names (when A is renamed to B and B to A)
  • Ticket 3211: When a database server is temporary down, the connections are resetted and created again when the server is up.
  • Ticket 3212: Fixed: an OQL query with the dot-separator (‘.’) in the WHERE clause to separate association paths, is not mapped correctly
  • Ticket 3210: Fixed: XPath queries with more than one constraint within a NOT expression, are not correctly rendered

Modeler fixes

  • Ticket 3412: Improved default security settings for the System module.
  • Ticket 3543: Fixed: Xpath constraint on a searchfield did not show inherited attributes.
  • Ticket 3474: On the deployment the WEB-INF/lib directory is emptied. This prevents library conflicts when they are updated.
  • Ticket 3514: Fixed: concurrency issue for multi-user environments.
  • Ticket 3471: Fixed: problem when running the Mendix Business Modeler on a chinese windows version.
  • Ticket 3097: Added consistency check for attributes or relations with the name ‘MendixObject’.

Copyright © Mendix. All rights reserved. | Mendix.com | Terms of Use | Privacy Policy