openerp-india team mailing list archive
-
openerp-india team
-
Mailing list archive
-
Message #14525
[Bug 1038017] [NEW] [6.1] OpenERP Server does not operate in UTC timezone under Windows
Public bug reported:
As of OpenERP 6.1 the server timezone is forced to UTC in order to
remove any ambiguous timezone/DST conversions, and make sure the
database content is fully portable. All timezone conversions are meant
to be performed on the client-side from now on. This was further
explained in bug 918257 (especially comment #4) and the further
technical discussions in bug 925361.
It appears that the manner in which we force the UTC timezone[1] does not work under Windows, probably because the Python implementation of the time module has some limitations on this platform (such as not supporting time.tzset()[2,3]).
As a result, the server will actually operate in the natural OS timezone, while thinking it is using UTC values. As a result, the offset from UTC may appear to be applied twice when displayed on the client-side.
It seems we must modify the OpenERP-Server-Service environment before startup to fix the issue. This can be done by adding an "Environment" registry value to the registry key defining the OpenERP-Server service, and then restarting the server.
The attached registry patch (fix_tz.reg) should accomplish this. In case it goes wrong, a second registry patch is provided to undo the change (undo_fix_tz.reg).
Any feedback on this registry patch from Windows users is greatly appreciated!
The next step is to integrate this registry patch in our All-In-One installer for Windows. The NSIS API provides ways to write to the registry, unfortunately we need to write a REG_MULTI_SZ (i.e. hex(7) type, as see in the registry patch), and this is not supported by the NSIS API.
This forum thread discusses a manual implementation of REG_MULTI_SZ in NSIS scripting, but seems overcomplicated/overkill for our simple patch: http://forums.winamp.com/showthread.php?t=172312
Perhaps we should simply include the .reg patch in the installer and merge it during installation (to be investigated)
Note: OpenERP servers deployed on a Unix platforms are not affected by
this issue. It is always recommended to deploy the server on Unix, as a
lot of maintenance tasks will be greatly simplified: configuration file
editing, log analysis, patch deployment, etc. End-users can of course
use the system from their Windows desktops, so this is usually not a
problem in most companies. Deploying the system in a virtual machine
running on a Windows host is also a workable solution.
[1] Setting os.environ['TZ'] to 'UTC' at server startup
[2] http://docs.python.org/library/time.html#time.tzset
[3] http://stackoverflow.com/questions/4360981/make-python-respond-to-windows-timezone-changes
** Affects: openobject-server
Importance: High
Assignee: OpenERP Publisher's Warranty Team (openerp-opw)
Status: In Progress
** Tags: timezone
--
You received this bug notification because you are a member of OpenERP
Indian Team, which is subscribed to OpenERP Server.
https://bugs.launchpad.net/bugs/1038017
Title:
[6.1] OpenERP Server does not operate in UTC timezone under Windows
Status in OpenERP Server:
In Progress
Bug description:
As of OpenERP 6.1 the server timezone is forced to UTC in order to
remove any ambiguous timezone/DST conversions, and make sure the
database content is fully portable. All timezone conversions are meant
to be performed on the client-side from now on. This was further
explained in bug 918257 (especially comment #4) and the further
technical discussions in bug 925361.
It appears that the manner in which we force the UTC timezone[1] does not work under Windows, probably because the Python implementation of the time module has some limitations on this platform (such as not supporting time.tzset()[2,3]).
As a result, the server will actually operate in the natural OS timezone, while thinking it is using UTC values. As a result, the offset from UTC may appear to be applied twice when displayed on the client-side.
It seems we must modify the OpenERP-Server-Service environment before startup to fix the issue. This can be done by adding an "Environment" registry value to the registry key defining the OpenERP-Server service, and then restarting the server.
The attached registry patch (fix_tz.reg) should accomplish this. In case it goes wrong, a second registry patch is provided to undo the change (undo_fix_tz.reg).
Any feedback on this registry patch from Windows users is greatly appreciated!
The next step is to integrate this registry patch in our All-In-One installer for Windows. The NSIS API provides ways to write to the registry, unfortunately we need to write a REG_MULTI_SZ (i.e. hex(7) type, as see in the registry patch), and this is not supported by the NSIS API.
This forum thread discusses a manual implementation of REG_MULTI_SZ in NSIS scripting, but seems overcomplicated/overkill for our simple patch: http://forums.winamp.com/showthread.php?t=172312
Perhaps we should simply include the .reg patch in the installer and merge it during installation (to be investigated)
Note: OpenERP servers deployed on a Unix platforms are not affected by
this issue. It is always recommended to deploy the server on Unix, as
a lot of maintenance tasks will be greatly simplified: configuration
file editing, log analysis, patch deployment, etc. End-users can of
course use the system from their Windows desktops, so this is usually
not a problem in most companies. Deploying the system in a virtual
machine running on a Windows host is also a workable solution.
[1] Setting os.environ['TZ'] to 'UTC' at server startup
[2] http://docs.python.org/library/time.html#time.tzset
[3] http://stackoverflow.com/questions/4360981/make-python-respond-to-windows-timezone-changes
To manage notifications about this bug go to:
https://bugs.launchpad.net/openobject-server/+bug/1038017/+subscriptions
Follow ups
References