Description
The normal notification process is below:
1. Setup a executing time, we assume it's 1:00:10 .
2. Get the last notification time of the subscription, we assume it's 1:00:05.
3. Get all change services between 1:00:05 – 1:00:10.
4. Notify these change services to client of this subscription.
5. If it's success, set the subscription's last notification time to be 'current time'.
The problem is the step 5, the last notification is updated to be 'current time', not the 'executing time', but in step 2, juddi use the 'executing time' to be the end time of changed services.
In some probability, the 'current time' is after 'executing time', then when next time notifying, the 'current time' will be used as start time at step 2, all changed services between 'current time' and 'executing time' will be lost to notify.
So the suggestion is in the class: org.apache.juddi.subscription.SubscriptionNotifier
the method: notify
The code :
===================================
Date notificationDate = new Date();
modelSubscription.setLastNotified(notificationDate); //This is not right, this time should be the end time, otherwise we will lose some changes.
===================================
shoule be changed to be:
=======================================
modelSubscription.setLastNotified(endPoint);
=======================================
Attachments
Issue Links
- duplicates
-
JUDDI-486 Notifier can miss changes due to issue with setting the lastNotification time
- Closed