10 Troubleshooting Calendar Server

This chapter describes troubleshooting strategies for Oracle Communications Calendar Server.

Troubleshooting Calendar Server Initial Configuration

If you experience trouble configuring Calendar Server while running the init-config initial configurator script and you receive an error from the application server, ensure that you are running the recommended Java version based on the JDK support available for the container and that your environment is configured appropriately.

Note:

If you use GlassFish Server 3.x, use the JDK version 1.7 and if you use WebLogic Server 12.x, use the JDK version 1.8. For more information, see the installation guide of the corresponding application server.

Troubleshooting Application Server and Java

If you upgrade your Java SE to Java SE Development Kit 7, Update 7 (JDK 7u7) or later, you must also upgrade GlassFish Server to the recommended patch level. If you use WebLogic Server, upgrade Java to the recommended JDK8 update version as suggested by the WebLogic Server version. Otherwise, you may encounter problems running the davadmin command.

Troubleshooting Common Issues

Begin troubleshooting by ensuring that the application server web container is running and that Calendar Server is deployed. You can use either the Application Server's Administration Console or the command-line utilities.

Topics in this section:

Using the asadmin Command to Specify GlassFish Server Port

If you have more than one GlassFish Server instance installed, use the asadmin -p to specify the instance's administrative port number.

Using the GlassFish Server Administration Console to Check Calendar Server Status

To check Calendar Server status by using GlassFish Server Administration Console:

  1. Start the console.

  2. Navigate to Web Applications under the Applications tab.

  3. Ensure that davserver is deployed and enabled.

Using the asadmin Command-line Utility to Check Calendar Server Status

Run the following commands:

asadmin list-components -p admin-port --type=web
davserver web-module
Command list-components executed successfully.

asadmin show-component-status -p admin-port davserver
Status of davserver is enabled. 
Command show-component-status executed successfully.

Using the WebLogic Server Administration Console to Check Calendar Server Status

To check the Calendar Server status by using the WebLogic Server Administration console:

  1. Start the WebLogic Server Administration Console.

  2. In the Domain Structure section, click the domain name. For example, domain1.

  3. Navigate to Environment, Servers, and then to the Configuration tab.

    Note:

    Ensure that the Administration Server and Managed Server in which Calendar Server is deployed are up and running.
  4. Navigate to Deployments.

  5. Ensure that davserver is deployed under the Configuration tab.

Troubleshooting the Calendar Server davserver Process

To troubleshoot the davserver process:

  1. If davserver is not enabled, check the Application Server log in which Calendar Server is deployed.

    • On GlassFish Server:

      Check server.log in the GlassFish_home/domains/domain1/logs directory.

    • On WebLogic Server:

      Check managed_server_name.log in Weblogic_Domain/servers/managed_server_name/logs directory.

  2. If davserver is deployed and enabled but clients have trouble connecting, check the davserver log, calendar.*, in the /var/opt/sun/comms/davserver/logs directory or an equivalent directory. To increase the log level, use the davadmin command as shown in the following example:

    davadmin config modify -o log.dav.errors.loglevel -v FINE
    

    See "Calendar Server Command-Line Utilities" for more information on the davadmin command.

Troubleshooting a Failing davadmin Command

For GlassFish Server:

If a davadmin command fails to run, use the -e option to get more details about the failure. For example:

davadmin version
Enter Admin password:*********
DAV server connection failed. Is the server running?

davadmin version -e
Enter Admin password:*********
JMXconnection exception for url service:jmx:rmi:///jndi/rmi://commsuite.example.com:46633/jmxrmi - Exception creating connection to: 1.1.1.1; nested exception is:
java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)

This example shows SSL errors. In this case, you would make sure that the truststore file pointed to by the command through the -s option, or the commandfile option, or the default one, if none were specified explicitly, exists and is valid. The default truststore file, .asadmintruststore, is located in the config directory.

To verify:

  1. As root, run an asadmin command on the GlassFish Server host on which Calendar Server is deployed. An .asadmintrustore file is created under the root (/) directory.

  2. Ensure that this file is the same as the one in the Calendar Server config directory.

Also, see "Troubleshooting Application Server and Java".

For WebLogic Server:

If you use WebLogic Server and when davadmin command is successful, the following output is displayed:

/opt/sun/comms/davserver/sbin/davadmin version
Enter Admin password: *********
Handshake succeeded: TLSv1.2
Oracle Communications Calendar Server version: 8.0.0.4.0 (built yyyy-mm-dd-Time)

The following example shows the output when the davdmin command fails:

/opt/sun/comms/davserver/sbin/davadmin version 
Enter Admin password: *********
Handshake failed: TLSv1.2, error = sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Handshake failed: TLSv1.1, error = sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Handshake failed: TLSv1, error = Received fatal alert: handshake_failure
Handshake failed: TLSv1.2, error = sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Handshake failed: TLSv1.1, error = sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Handshake failed: TLSv1, error = Received fatal alert: handshake_failure
Server unavailable at url: service:jmx:t3s://commsuite.example.com:46633/jndi/weblogic.management.mbeanservers.runtime

In the example, 46633 is the secure port of the managed server in which Calendar Server is deployed.

This example shows SSL errors. In this case, check the following to troubleshoot the issue:

  • WebLogic Server is configured in Secure mode using the supported keystores

  • WebLogic Administration Console is accessible as https://hostname:secure_port/console

  • The extractSSLArgs.sh script runs successfully in a secure mode before doing initial configuration.

    sh ./extractSSLArgs.sh -u weblogic_admin_user -p weblogic_admin_user_password -l t3s://weblogic_server_host:SSL_port
    
  • If there is a problem in running the above script successfully, try to use WLST command to connect to the server.

    wls:/offline> connect(weblogic_admin_user,weblogic_admin_user_password,t3s://weblogic_server_host:SSL_port");
    
  • WebLogic_Domain/config contains a valid .wls_sslargs file and the contents correspond to the same keystore options that is configured at the WebLogic Server Side Secure Configuration.

  • davadmin.properties file under CalendarServer_home/config folder contains proper details.

    For example:

    port=managed_server_port

    secure=location of truststore used in configuring WebLogic Server in secure mode

    For more information, see the discussion about running extractSSLArgs.sh to validate and store WebLogic Server SSL details in the Calendar Server Installation and Configuration Guide.

Troubleshooting MySQL Server Errors

If you find a MySQL Server back-end error, ensure MySQL Server is running.

If you use GlassFish Server:

  1. Start the GlassFish Server Administration Console.

  2. Select JDBC Resources from Resources, then select Connection Pools.

  3. Choose the caldavPool and perform a ping.

  4. If the ping fails, check the Pool properties to make sure they are all correct.

  5. You can also perform a command-line ping as follows:

    asadmin list-jdbc-connection-pools -p admin-port
    __CallFlowPool
    __TimerPool
    DerbyPool
    caldavPool
    Command list-jdbc-connection-pools executed successfully.
    
    asadmin ping-connection-pool -p admin-port caldavPool
    Command ping-connection-pool executed successfully.
    
  6. Even if you ping the pool, sometimes Calendar Server is not able to load the back end. In this case, you see errors similar to the following:

    SEVERE  [2009-09-03T22:00:53.310-0700] <...JdbcBackend.getDataSource> Cannot lookup DataSource: javax.naming.NameNotFoundException: defaultbackend1 not found
    
    SEVERE  [2009-09-03T22:00:53.313-0700] <...DavServer.loadBackend> failed to instantiate or create backend com.sun.comms.davserver.backends.BackendException: Cannot get DataSource: javax.naming.NameNotFoundException: defaultbackend1 not found(OPERATION_NOT_SUPPORTED)
    
  7. To see the pool and resource data clearly, view the GlassFish Server configuration file, for example:

    GlassFish_home/domains/domain1/config/domain.xml
    
  8. If cause of error is not clear, delete and recreate the Connection Pool and JDBC resource by using the asadmin command, for example:

    asadmin delete-jdbc-connection-pool -p admin-port caldavPool
    asadmin create-jdbc-connection-pool -p admin-port --user admin --datasourceclassname com.mysql.jdbc.jdbc2.optional.MysqlDataSource --restype javax.sql.DataSource --property "DatabaseName=caldav:serverName=mysqlhost:user=caldav:password=mysqlpass:portNumber=3306:networkProtocol=jdbc" caldavPool
    
    asadmin create-jdbc-resource -p admin-port --user admin --connectionpoolid caldavPool jdbc/defaultbackend
    

    If you recreate the JDBC resource, ensure to use the same user name and password that you initially used to create the resource. Restart GlassFish Server after recreating the connectionpool and resource.

If you use WebLogic Server:

  1. Start the WebLogic Server Administration Console.

  2. In the left pane of the Console, under Domain Structure, select the domain name.

  3. Click Services and Data Sources.

    JDBC DataSources - defaultbackend and ischedulebackend are displayed in the Configuration tab.

  4. Select the defaultbackend JDBC Data Source name from the list.

  5. Select Configuration and General tab.

    The settings for defaultbackend are displayed.

  6. Navigate to the Connection Pool tab and ensure that the properties are correct.

  7. Navigate to Monitoring, and then click the Testing tab.

  8. Select the listed managed server name and click the Test Data Source button.

    Success or Error message displays in the Administration Console.

    Note:

    If the connection fails, verify the Pool properties from the Connection Pool tab to ensure all properties are correct.

    Occasionally, Calendar Server may not load the backend even though the connection to pool succeeds. To see the pool and resource data clearly, view the WebLogic Server configuration file. For example, Weblogic_Domain/config/config.xml

  9. Delete and recreate the Connection Pool and JDBC resource from WebLogic Server Administration Console if the cause of the error is unclear.

    1. Click Lock & Edit before making changes to the configuration.

    2. Click Activate Changes after making the changes and saving the configuration.

      Note:

      If you recreate the JDBC resource, ensure to use the same user name and password that you initially used to create the resource.

      If you use WebLogic Server as a container, for creating the JDBC resource, see the discussion about installing and configuring multiple Calendar Server back-end hosts for WebLogic Server manually in the Calendar Server Installation and Configuration Guide.

    3. Restart WebLogic Server after recreating the connection pool and resource.

  10. Verify the MySQL logs for any errors.

Importing a Convergence ics File

You might see the following error when importing an ics file that was created in Convergence.

davadmin calresource import -u admin -a caluser6@example.com -m convergence_caluser6_2.2.ics
Unable to import the resource into 'calendar'. DUE: 20090905T000000Z is before or equal to DTSTART: 20090905T000000Z

This is likely a Convergence problem, because it creates the todo by setting DTSTART and DUE to the same time. This is due to the restrictions described in RFC5545. The description section states that DUE must be later than DTSTART.

The workaround is to manually fix the iCal data to have DTSTART before DUE.

Refreshing Domain Information

Calendar Server fetches and caches some domain information that is stored in LDAP, such as domain status. The system does not periodically refresh domain information, unlike user and group information.

If you need to refresh domain information, you can use one of the following methods:

  • Restart the application server.

  • Using the davadmin command, make a change to any of the LDAP-related configuration options (base.ldapinfo.*), which causes the server to refresh all cached LDAP data.

Troubleshooting the iSchedule Back End on MySQL Server

If you are unable to do a POST command to /davserver/dav/ischedule/, check the following:

  1. Verify that the davcore.scheduling.ischedulebackendid=ischedulebackendid parameter has been set in the davserver.properties file.

  2. Verify that you can connect to the ischedulepool from the application server.

    If you use GlassFish Server, you can use the ping command from the GlassFish Administration Console and if you use WebLogic Server, you can use the Test Data Source option from the WebLogic Server Administration Console.

    If you get the error "Access denied for user 'mysql'@'localhost' to database 'ischedule'," run the following MySQL Server command

    GRANT ALL ON ischedule.* TO 'mysql'@'localhost'
    
  3. Verify that you can now connect to ischedulepool from the application server.

  4. Restart the application server.

Enabling Telemetry Logging

To troubleshoot issues with a particular calendar user or client, it is useful to log all protocol interactions. You can force all telemetry logs by setting the service.dav.telemetry.forcetelemetry parameter to true. Do not use this setting unless required as it generates lots of data.

To enable telemetry logging at a reduced level, set the service.dav.telemetry.filter parameter. This parameter takes a space separated list of request URI prefixes that should be logged. For example:

  • /wcap/ logs all WCAP access.

  • /dav/principals/caluser1/ /dav/home/caluser1/ logs all Calendar Server access to caluser1's account (both principals and home collections, and all the resources underneath).

Common Errors in Log Files

This section presents common errors that you might see in the Calendar Server log files. For more information about using log files, see "Managing Logging".

Topics in this section:

Using the Same Start and End Date for an Event

FINE    [2009-08-24T19:28:57.020-0700] <...DavServlet.service> Got a non standard condition: DTEND: 20090829T000000 is before or equal to DTSTART: 20090829T000000
INFO    [2009-08-24T19:28:57.021-0700] <...DavServerServlet.service> [RES] [403]    Command execution time: 0.041 secs

Same UID Already in Use

FINE    [2009-08-24T19:30:50.044-0700] <...DavServlet.service> Got a non standard condition: uid q3EfPB0C4EHHj918X2GVU1 already in use in /dav/home/modendahl/calendar/765345.ics
INFO    [2009-08-24T19:30:50.046-0700] <...DavServerServlet.service> [RES] [403]    Command execution time: 0.063 secs

No Specification of Content-type Header

FINE    [2009-08-24T19:32:07.803-0700] <...DavServlet.service> Got a non standard condition: unsupported content-type: application/octet-stream
INFO    [2009-08-24T19:32:07.805-0700] <...DavServerServlet.service> [RES] [403]    Command execution time: 0.019 secs

Deleting a Non-existing File

FINE    [2009-08-24T19:32:58.098-0700] <...DavServlet.service> Got a non standard condition: getNode returned null for uri /dav/home/modendahl/calendar/teeeest.ics
INFO    [2009-08-24T19:32:58.099-0700] <...DavServerServlet.service> [RES] [404]    Command execution time: 0.012 secs

Posting to Calendar Collection Without a File Name

FINE    [2009-08-24T19:33:39.239-0700] <...DavServlet.service> Got a non standard condition: Invalid Resource Type in POST:CALENDAR_RESOURCE
INFO    [2009-08-24T19:33:39.241-0700] <...DavServerServlet.service> [RES] [403]    Command execution time: 0.02 secs

Using a Non-implemented HTTP Method

INFO    [2009-08-24T19:35:10.416-0700] <...DavServerServlet.service> [REQ] CONNECT /dav/home/modendahl/calendar/ 192.18.127.57 ics-s6.sfbay.example.com:8080
INFO    [2009-08-24T19:35:10.418-0700] <...DavServerServlet.service> [RES] [501]    Command execution time: 0.0020 secs

Using the Browser Servlet in GlassFish Server Deployments

You can use a browser servlet to view an account's properties stored in collections and resources. You might find this helpful when troubleshooting calendar problems. For more information, see "Known Issues".

To access this browser servlet, take any valid dav URI and replace the dav prefix following davserver with browse. For example, in a browser, change the following:

http://example.com:3080/davserver/dav/home/smithj/calendar/

to:

http://example.com:3080/davserver/browse/home/smithj/calendar/

The servlet returns a a view of the account's properties stored in collections and resources. You can navigate among properties and delete them as well. The servlet also has some import function if you want to use a server-side import instead of a client-side import.

The delete and file import features are enabled only when the logging level is set at FINE or lower. To specify the logging level, use the log.dav.errors.loglevel configuration parameter.

Tip:

You can log in with Calendar Server administrator (the default is calmaster) credentials to view multiple accounts with one login. Also, when viewing multiple accounts, clear your browser cache before viewing the next account.

Troubleshooting CalDAV Clients

This section describes client issues.

Topics in this section:

Lightning

Lightning does not support more than one calendar account. It allows only one account per server at a time.

Lightning 0.9 does not support multiple reminders for single events. Lightning 1.0 beta 1 does support multiple reminders.

Lightning is not able to create an account if the user name contains special characters.

If Lightning 1.0 beta1 is installed with Thunderbird 3, and you try to go back to Thunderbird 2 and Lightning 0.9, when starting Thunderbird the following error occurs:

The Calendar data in your profile was updated by a newer version of Lightning, and continuing will probably cause the information to be lost or corrupted. Lightning will now be disabled and Thunderbird restarted.

To fix this error:

  1. Export all your calendar data in iCalendar format.

  2. Remove the calendar database storage.sdb file from your profile.

  3. Restart the Thunderbird and import the iCalendar file.

    Thunderbird on Solaris needs to be reloaded twice to get the newly created Todo.

Inviting users on Thunderbird for Solaris and checking their availability does not show free/busy check properly. Instead, the invitee is always shown as free even when the invitee is busy.

Calendar import is failing with Thunderbird on Windows and Solaris. The failed import displays the "Modification_failed" error message. Logging back in to the profile loads the imported data to the calendar.

Apple iCal

Apple iCal adds its own default reminder to an event if you select the "Add a default alarm to all new events and invitations" option. Thus, if calendar1 exports the event (with no reminder) and calendar2 imports it, the imported reminder has a default alarm set.

Apple iCal is not able to create an account if the user name contains special characters.

If the event is created with "Repeat on Weekdays only" option from Lightning or Convergence, the Apple iCal will convert it to "Every day" and display it.

iPod touch

The following information was found with iPod touch 3.1.3 firmware.

Supported Features:

  • Event is supported.

  • Reminders are supported with iPod touch, up to a maximum of two reminders for a single event.

  • Recurrence is supported.

  • iPod touch client enables you to a create duplicate calendar.

Unsupported Features:

  • Todos.

  • [AppleiPhone]STATUS not being taken into account when invitation event canceled by organizer.

  • Invitations can be viewed by not accepted, declined or rejected.

  • When the organizer of the event cancels the event, invitees do not have any information that event is canceled.

  • Attachments.

  • Free/busy.

  • Availability check.

  • Import-Export functionality.

  • Share/Subscribe of calendar.

Known Issues

Apple iPhone STATUS not being taken into account when invitation event canceled by organizer

When an iPhone 3 user gets an invitation from a Lightning user, there is no option to accept, reject, or decline the event. Additionally, when the inviting user deletes the event, the iPhone user does not receive an event notification, nor is the event deleted from the user's calendar. The event is in read-only mode. This issue is fixed starting with the iPhone 4 release.

Connector for Microsoft Outlook

See "Connector for Microsoft Outlook and Event Time Modifications".

Troubleshooting Clients Running iOS 5 and Mac OS 10.7

For correct setup and data synchronization to occur on devices running iOS 5 and Mac OS 10.7, make sure that you have installed at least Calendar Server 7 Update 2 Patch 5.

Mac OS 10.9 iCal Client Not Able to Delete Events

Currently, the Mac OS 10.9 iCal Client enables you to create or move events, but not delete events.

Checking Active Calendar Users

See "Checking for Active Calendar Users".

Troubleshooting Calendar Server Agent Alerts in Instant Messaging Server

You can configure Instant Messaging Server for Java Message Service (JMS) to support Calendar Server Agent alerts. If you find that you are not receiving event reminders (alarms) in an XMPP-enabled instant messaging client, verify that the password configuration has been properly configured.