Servoy 6.1

We are getting the following error when attempting to import solutions in Application Server:

com.servoy.j2db.persistence.RepositoryException: Data model change needed: server - argos_user_data table - ap_payment but is not allowed from import preferences. 
    	at com.servoy.j2db.server.Zc.Zj.Za(Zj.java:239) 
    	at com.servoy.j2db.server.Zc.Zj.importDatabaseInfo(Zj.java:655) 
    	at com.servoy.j2db.server.Zc.Zdb.Za(Zdb.java:397) 
    	at com.servoy.j2db.server.Zc.Zdb.importFromJarFile(Zdb.java:549) 
    	at com.servoy.j2db.server.servlets.ConfigServlet.Zi(ConfigServlet.java:2338) 
    	at com.servoy.j2db.server.servlets.ConfigServlet.service(ConfigServlet.java:2697) 
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:554) 
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) 
    	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
    	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
    	at java.lang.Thread.run(Unknown Source)

Some additional information:

  • we update the databases with a separate tool before the solution imports and ensure that the Servoy application server is restarted after the database updates so it can pickup the changes
  • when importing solutions we do not use the Servoy option “allow data model (database) changes”
  • I have verified that the table ap_payment exists in the argos_user_data database
  • when I try the solution import again, a similar error will be thrown but this time for another new table or column (as if the server now “sees” the table/column on which it failed before but does not “see” the next change); after several attempts which fail on different tables or columns the errors will start to repeat/cycle through the same tables/columns;
  • we have been using the same database update and solution import process for quite some time now without these issues - even RC1, RC2 and RC3 worked fine (did not try the RC4); it appears that this changed behavior is introduced after RC3

Re: Servoy 6.1

Postby jcompagner » Wed Jul 04, 2012 5:43 pm

briese-it wrote:Next problem.
I want to change an Image at runtime depending on a result within the record. In 6.0.6 I have used onRender with event.getRenderable()[“imageURL”] = “media:///Info_xy.png”;

that was not supported code, this will not work in 6.1
We have (and had) only a supported set of properties that you can set:

http://wiki.servoy.com/display/test61/Renderable
Johan Compagner
Servoy

I see but how can I do that now? I tried it with a styleclass and imageurl in putClientProperty but that’s not running, too. I need a status with different images depending on a calculation at runtime.
For better understandings:
The Images are clickable, then a popup form appears with a related foundet (Record-Informations). I want to have a status preview in the main form (maybe green,red…) if there are records in the popup form. Normally it’s really easy, but I don’t know how to do it in Servoy…

briese-it:
Hello,
TabPanels are not fired in Firefox on my system with Version 6.1, it’s always on the first tab and I cannot switch to the others. IE9 is working fine. Has someone else the same problem?

Yes, we have the same problem with a dialog containing tabpanels. We can open 2 different tabs and after that we cannot open any tabs anymore. Clicking on the tab title shortly shows the ajax loader and then a debug message is logged: “couldnt resolve the page of the component, component already gone from page? returning empty”. This is in Firefox, in IE no problems.

Ok then I’am not the only one with such problems :-) I have posted it in the framework-section, too. I hope Sanneke will read it soon.

rossent:
We are seeing some strange behavior in the Web Client.

In Firefox:

  • on TABLE_VIEW forms, all buttons in the grid do not display the images set via the imageMedia property, in all other browsers which we tested the images are displayed correctly

Has anyone else seen something similar

Yes, we see similar things. For us it is not related to TABLE_VIEWS. For all buttons that have no titleText set, but only an icon (imageMedia), AND showClick is set to true, the icon is not displayed in FireFox. We have to set the showClick to false to show the icon, but then the button styling is removed.
In IE the icon-only buttons show normal, regardless of showClick.

We use self-relations (relations where no join criteria columns are specified) to share the same foundset with multiple forms at runtime.
For example, given a self relation table1_to_table1 and forms formA and formB both based on table1, we share the foundset used by formA using

    //code executed in the context of formA
    forms.formB.controller.loadRecords(table1_to_table1);

In 6.0 this worked fine even when formA did not have any records loaded - in such cases formB was being assigned the same empty foundset as the one in formA.

In 6.1, if formA does not have any records (the foundset it empty), calling the method above results in exception Error: java.lang.IllegalArgumentException: Cannot find function loadRecords for argument null . Basically, when there are no records in the formA foundset, the relation table1_to_table1 returns null instead of the same empty foundset which it did in 6.0

I am not sure if this is the designed behavior or a bug. If this is the designed behavior, how can we safely share/assign the same foundset from one form to another even when the foundset is empty? Perhaps, having a new method in the form controllers similar to: controller.assignFoundset(someFoundset) will be handy and will allow us to share foundsets among forms without the use of self-relations (the self-relations are still needed when using TabPanels and assigning forms at design time).

Hi all,

In the final 6.1 we started experiencing quite often the following issue - during debug sessions, the Servoy Developer and the debugged Smart Client will freeze. Many time developer have to kill the Servoy Developer process, occasionally after several minutes the Servoy Developer will come back to life. The issue is not reproducible at will and at the point where the Developer will freeze during one session it will work fine during the next debug session.

Does anybody else see similar issues? In the past we have had similar issues, but they were very rare. After the release of 6.1 almost all of our developers are seeing these issues on a daily basis.

I’ve had a similar situation on a few occasions which was also related to the debugger. In my case the progress indicator on the lower right of the screen would go to 70% (for globals.js) and stop there. After a few minutes I would get the message ‘unable to connect to the IDE’ or something like that. I could solve this by taking all code out of globals.js, save it, put all code back, save it again and restart Servoy.

I must say however that this was in 6.1RCx and I have not seen it occur in Servoy 6.1 final.

briese-it:
I see but how can I do that now? I tried it with a styleclass and imageurl in putClientProperty but that’s not running, too. I need a status with different images depending on a calculation at runtime.
For better understandings:
The Images are clickable, then a popup form appears with a related foundet (Record-Informations). I want to have a status preview in the main form (maybe green,red…) if there are records in the popup form. Normally it’s really easy, but I don’t know how to do it in Servoy…

this just can’t currently be done with onrender, we just don’t support that property, you can make a case for that that we also add that property

But can’t you do it directly with a calculation? that returns directly the byte of the media you want and attach the calculation to a label or something?

norbert:

rossent:
We are seeing some strange behavior in the Web Client.

In Firefox:

  • on TABLE_VIEW forms, all buttons in the grid do not display the images set via the imageMedia property, in all other browsers which we tested the images are displayed correctly

Has anyone else seen something similar

Yes, we see similar things. For us it is not related to TABLE_VIEWS. For all buttons that have no titleText set, but only an icon (imageMedia), AND showClick is set to true, the icon is not displayed in FireFox. We have to set the showClick to false to show the icon, but then the button styling is removed.
In IE the icon-only buttons show normal, regardless of showClick.

are cases created for these FireFox problems?

omar:
I’ve had a similar situation on a few occasions which was also related to the debugger. In my case the progress indicator on the lower right of the screen would go to 70% (for globals.js) and stop there. After a few minutes I would get the message ‘unable to connect to the IDE’ or something like that. I could solve this by taking all code out of globals.js, save it, put all code back, save it again and restart Servoy.

I must say however that this was in 6.1RCx and I have not seen it occur in Servoy 6.1 final.

this was fixed in the last RC or the final.

rossent:
Hi all,

In the final 6.1 we started experiencing quite often the following issue - during debug sessions, the Servoy Developer and the debugged Smart Client will freeze. Many time developer have to kill the Servoy Developer process, occasionally after several minutes the Servoy Developer will come back to life. The issue is not reproducible at will and at the point where the Developer will freeze during one session it will work fine during the next debug session.

Does anybody else see similar issues? In the past we have had similar issues, but they were very rare. After the release of 6.1 almost all of our developers are seeing these issues on a daily basis.

Rossen,

At the moment this freeze happens, can you go to the admin page and dump the stack? So that we can say what it currently does?

This is also a tip for everybody reading this, if in developer (or webclients/server) something really hangs for a while (in what ever form or place, so the developer it self or any debug clients, web or smart) please go to the admin page and dump the stack. Then we can quite easily see what it is doing at that time, To have a bit more info when it takes a bit longer is have a few dumps 5-10 seconds apart.

rossent:
We are getting the following error when attempting to import solutions in Application Server:

com.servoy.j2db.persistence.RepositoryException: Data model change needed: server - argos_user_data table - ap_payment but is not allowed from import preferences. 
	at com.servoy.j2db.server.Zc.Zj.Za(Zj.java:239) 
	at com.servoy.j2db.server.Zc.Zj.importDatabaseInfo(Zj.java:655) 
	at com.servoy.j2db.server.Zc.Zdb.Za(Zdb.java:397) 
	at com.servoy.j2db.server.Zc.Zdb.importFromJarFile(Zdb.java:549) 
	at com.servoy.j2db.server.servlets.ConfigServlet.Zi(ConfigServlet.java:2338) 
	at com.servoy.j2db.server.servlets.ConfigServlet.service(ConfigServlet.java:2697) 
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:554) 
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) 
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
	at java.lang.Thread.run(Unknown Source)



Some additional information:
- we update the databases with a separate tool before the solution imports and ensure that the Servoy application server is restarted after the database updates so it can pickup the changes
- when importing solutions we do not use the Servoy option "allow data model (database) changes"
- I have verified that the table **ap_payment** exists in the **argos_user_data** database
- when I try the solution import again, a similar error will be thrown but this time for another new table or column (as if the server now "sees" the table/column on which it failed before but does not "see" the next change); after several attempts which fail on different tables or columns the errors will start to repeat/cycle through the same tables/columns;
- we have been using the same database update and solution import process for quite some time now without these issues - even RC1, RC2 and RC3 worked fine (did not try the RC4); it appears that this changed behavior is introduced after RC3

Are you sure the table is loaded on application server? If you create a small sample based on that table (using solution model form), does it display well?

jcompagner:
are cases created for these FireFox problems?

Yes, see https://support.servoy.com/browse/SVY-2605

I have a lot of warnings (deprecated) for the methods: utils.dateFormat and utils.numberFormat. Quick fix shows that I have to add SuppressWarnings for that. Is there an other new call for these methods or should I ignore this and add only the @SuppressWarnings command? Iam asking because maybe these methods are not longer supported within next releases…

If utils.numberFormat() and utils.dateFormat() are deprecated then it’s interesting that they still show up in the navigator view in Servoy 6.1 final.
Also I don’t see a reason to have them deprecated, but that is me…

Is there a list of deprecated functions for the Servoy Developer community ? I don’t see it in the Wiki that quickly…

Regards,

lvostinar:
Are you sure the table is loaded on application server? If you create a small sample based on that table (using solution model form), does it display well?

I am not sure what you mean by “table is loaded on application server”. Here is what I did:

  1. Older version of the solution was imported on the test server, everything works fine
  2. Before deploying a new version of the solution, I deleted all solutions from the test server
  3. Stopped the test server
  4. Updated the database using an external tool - the database is verified to match the dbi information of the new version of the solution (when the solution was exported, the option “Export all tables” was used)
  5. Started the test server and verified that no solutions are available on it
  6. Attempt to import the new version of the solution and got the above error. Attempting the import again fails with similar error but referencing another table. All errors are related to tables which have been modified between the old and the new version of the solution. All error messages indicate that Servoy want to add/update a table or column which is already added/updated in the database - in other words, Servoy did not read the current database schema from the database, but was using something old. The solution does contain forms based on the tables for which errors were raised.

ROCLASI:
If utils.numberFormat() and utils.dateFormat() are deprecated then it’s interesting that they still show up in the navigator view in Servoy 6.1 final.
Also I don’t see a reason to have them deprecated, but that is me…

Its the specific call that is i guess deprecated…
I think we have a number of methods where the old (varargs one for example) is deprecated and the real typed one is now the preferred one

I guess somehow the call to dateFormat or numberFormat is not mapping directly on the right typed one.

I have seen that utils.dateFormat() is really deprecated. The new method is utils.parseDate. Maybe there is something new for utils.numberFormat(), too.