This forum is closed to new posts and responses. Individual names altered for privacy purposes. The information contained in this website is provided for informational purposes only and should not be construed as a forum for customer support requests. Any customer support requests should be directed to the official HCL customer support channels below:

HCL Software Customer Support Portal for U.S. Federal Government clients
HCL Software Customer Support Portal


Feb 11, 2015, 3:29 PM
3 Posts

'C' api SchSrvRetrieveExt gets NULLHANDLE

  • Category: Calendar
  • Platform: All Platforms
  • Release: 9.0.1
  • Role: Developer
  • Tags:
  • Replies: 4

I have a room defined with a "Limit the Advance Reservation of this Room/Resource" of 30 days.

If I call SchSrvRetrieveExt with just that room, I get what I'd expect - all scheduled events for 30 days from today's date, followed by all time busy due to the above.

If I call SchSrvRetrieveExt with a person over that same interval, I get the scheduled events for the duration requested.

If I call SchSrvRetrieveExt with both the person and the room together, I get a NULLHANDLE if any part of the interval is beyond 30 days from today.

With DEBUG_SCHED_ALL=1 and DEBUG_SCHEDULE=31 set on the room's mail server, there are messages logged that only happen when it's going to return a NULLHANDLE.  

Strangely they are all about the person - "Schedule_AddSchedList> Disregarding out of bounds appointment ..." and eventually they are wrong - the appointments listed are in the bounds I'm asking about.

I see this on 9.0.1 FP2.and 8.5.3.

Feb 11, 2015, 8:50 PM
34 Posts
Partial answer but I need more info
First the comments on a couple things.

With DEBUG_SCHED_ALL=1 and DEBUG_SCHEDULE=31 set on the room's mail server, there are messages logged that only happen when it's going to return a NULLHANDLE.  

DEBUG_SCHEDULE is for the Schedule Manager and will not help analyzing the _lookup_ side of the system.  It will only help in the data collection side of busytime.

DEBUG_SCHED_ALL is the "master key" INI for logging the lookup of busytime data and is all you should need to start with.  

Strangely they are all about the person - "Schedule_AddSchedList> Disregarding out of bounds appointment ..." and eventually they are wrong - the appointments listed are in the bounds I'm asking about.

Those lines simply tell you that there were entries in the users busytime that are entirely before or entirely after the requested interval that are being ignored for your request.  If your request is for, say, 2/13/2015 @ 11 AM EST to 2/13/2015 @ 12 PM EST then you should see that kind of output for all entries up to the starting date & time (since the data is stored chronologically).

I have never seen data that is within the requested interval not get returned when its there.  I have to ask what kind of interval you are using since a bad interval would result in an error code and debug like:

RetrieveSchedule> Request interval had bad/wildcarded Time-Date on it.

or

RetrieveSchedule> Appointment UNID OF12345678:12345678-ON12345678:12345678 has invalid Time-Date on it

Lastly, does the debug trace for the room and user look the same as when you do the lookups separately?  If not then what's different??  You should see the same Disregarding messages for the same interval when doing a single or multiple name lookup.  If you do not then something you are sending in is different and the question is what...


Bruce
IBM
Feb 11, 2015, 11:56 PM
3 Posts
more info

The mail server where the room resides is not the server where the SchSrvRetrieveExt call is made, but there are no error messages logged by schedule api on either server for any of the requests.

Today, SchSrvRetrieveExt has a good handle and gets good data for the interval 2015-02-10T00:00:00 to 2015-03-12T00:00:00

and SchSrvRetrieveExt returns a null handle and so gets no data for the interval 2015-02-11T00:00:00 to 2015-03-13T00:00:00

when asking for both the user and the room's schedule.  The mail server's log of the 2 requests are identical (ignoring handle values, and differing # of 'out of bounds' messages based on start time.  (You're right, they are correct - I messed up pairing the 2 servers log entries before.))

The logs of the 2 requests on the server making the SchSrvRetrieveExt call differ only in that the bold text appears only in the successful first request interval:

SchWaitRqst> Request completed on container 20000299h
SchMsgQHandles_Free> InputQ: 11C48h
SchMsgQHandles_Free> OutputQ: 11B7Ch
SchContainer_Free> Called with hCntnr = 20000299h
SchContainer_Free>   Ref: 0
SchContainer_Free> Freeing tree.
SchContainer_Free> Zeroing bMain: [1:1520]
SchContainer_Free> Freeing hCntnr = 20000299h
SchSrvRetrieveWait> Return 4 new schedules
SchSrvRetrieveWait> Returning 20000294h
SchSrvRetrieveWait>    and flagging as completed

SchContainer_Free> Called with hCntnr = 20000298h

 

When asking for just the room having the 30 day restriction, there is data for requests starting 2-10, and a null handle if starting 2-11.

When asking for just the person, there is data for both intervals.  Adding the room to the first interval works as it should, adding it to the second interval causes it to return a null handle.

I can send you the full logs from both servers if you would like.

 

Mar 4, 2015, 10:02 PM
3 Posts
Simplified test case

Hi Bruce,

Here's an easy way to reproduce the issue - like before, define a room with the "Limit the Advance Reservation of this Room/Resource" set to 30 days.

Use the Notes client to schedule the room for 29 days from the current day, while there observe that from day 30 onward the room shows as busy - you can't schedule any farther in advance than 30 days...

Use the 'C' sdk's samples\misc\schedule program to ask for that room (you'll have to hard code it, as is it only asks for schedule of person whose id is used when running it) for 2 days - day 28 and 29.  Get the one meeting you scheduled.

Ask for day 29 and 30.  You should get what the Notes client showed - 1 meeting, and then 1 busy time that spans all the next day.  Instead you get a null handle from SchSrvRetrieve: no schedule exists.

If you could please post the spr #, that will help me with my customer.

Thanks,

Steve

Jul 22, 2015, 11:33 PM
34 Posts
Need a little more info
Sorry for the delay in catching back up to this thread.  Work has had be fully booked in other areas.

The "Disregarding out of bounds appointment " messages are normal, especially when you are requesting an interval that is in the future by several days or weeks and the user / room has calendar entries.  The data is stored chronologically so that just tells you the code is skipping past the entries that occur before the time you requested.  Since the data is stored in a presorted form the system can tell when it is done extracting busytime data when the entry in busytime begins after your requested interval ends (so no disregarding messages will show for dates/times after your requested interval.)

What flags are you passing into the API call?  You can easily get that from the debug output:

SchSrvRetrieveAsync> dwOptions =  ###

The systems internal code paths vary based on a couple of the input flags so knowing what you are using will help me reproduce and find where it may be misbehaving.

Try adding DEBUG_SCHED_LOCAL=1 to your debug settings and running a lookup.  This INI will cause the local data results to be logged and dumped as they are sifted and put into the response buffer.  Look for output that starts with:

RetrieveSchedule> Adding

which is followed by the data being put into the return buffer.

Lastly, do you see debug data that looks like:

SchContainer_Build> Num objects to build 1
Obj_NewFromCanonical> Object size is 98 bytes
Obj_NewFromCanonical> Creating schedule object for CN=Bruce Kahn/OU=Westford/O=IBM, error = 0h
Obj_NewFromCanonical> Object size is 1016 bytes
Obj_NewFromCanonical> Adding sched list object to schedule for CN=Bruce Kahn/OU=Westford/O=IBM
Obj_NewFromCanonical> Object size is 8 bytes
Obj_NewFromCanonical> Adding sched list object to schedule for CN=Bruce Kahn/OU=Westford/O=IBM
Obj_NewFromCanonical> Object size is 84 bytes
Obj_NewFromCanonical> Adding profile object to schedule for CN=Bruce Kahn/OU=Westford/O=IBM
Obj_NewFromCanonical> Object size is 30 bytes
Obj_NewFromCanonical> Adding object of type 8h

That shows you that data is being put into the busytime buffer to return to you.
Bruce
IBM

This forum is closed to new posts and responses. Individual names altered for privacy purposes. The information contained in this website is provided for informational purposes only and should not be construed as a forum for customer support requests. Any customer support requests should be directed to the official HCL customer support channels below:

HCL Software Customer Support Portal for U.S. Federal Government clients
HCL Software Customer Support Portal