chore(sogo-ealarms-notify): properly close all DB channels
This prevent MySQL from logging an error (Aborted connection to db).pull/301/head
parent
7d07ddaffd
commit
cf40a23b43
|
@ -51,6 +51,7 @@
|
||||||
- (void)releaseChannel:(EOAdaptorChannel *)_channel;
|
- (void)releaseChannel:(EOAdaptorChannel *)_channel;
|
||||||
- (void)releaseChannel:(EOAdaptorChannel *)_channel
|
- (void)releaseChannel:(EOAdaptorChannel *)_channel
|
||||||
immediately:(BOOL)_immediately;
|
immediately:(BOOL)_immediately;
|
||||||
|
- (void) releaseAllChannels;
|
||||||
|
|
||||||
/* checking for tables */
|
/* checking for tables */
|
||||||
|
|
||||||
|
|
|
@ -399,6 +399,27 @@ static NSTimeInterval ChannelCollectionTimer = 5 * 60;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void) releaseAllChannels
|
||||||
|
{
|
||||||
|
EOAdaptorChannel *channel;
|
||||||
|
GCSChannelHandle *handle;
|
||||||
|
NSEnumerator *e;
|
||||||
|
|
||||||
|
e = [busyChannels objectEnumerator];
|
||||||
|
while ((handle = [e nextObject]))
|
||||||
|
{
|
||||||
|
[handle retain];
|
||||||
|
ASSIGN (handle->lastReleaseTime, [NSCalendarDate date]);
|
||||||
|
[busyChannels removeObject: handle];
|
||||||
|
channel = [handle channel];
|
||||||
|
if (debugPools)
|
||||||
|
[self logWithFormat: @"releaseAllChannels: freeing old channel (age %ds, %p) ", (int)[handle age], channel];
|
||||||
|
if ([channel isOpen])
|
||||||
|
[channel closeChannel];
|
||||||
|
[handle release];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* checking for tables */
|
/* checking for tables */
|
||||||
|
|
||||||
- (BOOL) canConnect: (NSURL *) _url
|
- (BOOL) canConnect: (NSURL *) _url
|
||||||
|
|
|
@ -77,12 +77,12 @@
|
||||||
{
|
{
|
||||||
iCalCalendar *calendar;
|
iCalCalendar *calendar;
|
||||||
GCSFolder *folder;
|
GCSFolder *folder;
|
||||||
|
GCSFolderManager *fm;
|
||||||
NSDictionary *eventRecord;
|
NSDictionary *eventRecord;
|
||||||
|
|
||||||
folder = [[GCSFolderManager defaultFolderManager]
|
fm = [GCSFolderManager defaultFolderManager];
|
||||||
folderAtPath: [record objectForKey: @"c_path"]];
|
folder = [fm folderAtPath: [record objectForKey: @"c_path"]];
|
||||||
eventRecord = [folder
|
eventRecord = [folder recordOfEntryWithName: [record objectForKey: @"c_name"]];
|
||||||
recordOfEntryWithName: [record objectForKey: @"c_name"]];
|
|
||||||
calendar = [iCalCalendar parseSingleFromSource:
|
calendar = [iCalCalendar parseSingleFromSource:
|
||||||
[eventRecord objectForKey: @"c_content"]];
|
[eventRecord objectForKey: @"c_content"]];
|
||||||
|
|
||||||
|
@ -203,6 +203,7 @@
|
||||||
SOGoAppointmentFolder *container;
|
SOGoAppointmentFolder *container;
|
||||||
iCalEntityObject *entity;
|
iCalEntityObject *entity;
|
||||||
GCSAlarmsFolder *af;
|
GCSAlarmsFolder *af;
|
||||||
|
GCSFolderManager *fm;
|
||||||
iCalAlarm *alarm;
|
iCalAlarm *alarm;
|
||||||
NSMutableArray *alarms;
|
NSMutableArray *alarms;
|
||||||
NSDictionary *record;
|
NSDictionary *record;
|
||||||
|
@ -210,7 +211,8 @@
|
||||||
int count, max;
|
int count, max;
|
||||||
NSString *owner;
|
NSString *owner;
|
||||||
|
|
||||||
af = [[GCSFolderManager defaultFolderManager] alarmsFolder];
|
fm = [GCSFolderManager defaultFolderManager];
|
||||||
|
af = [fm alarmsFolder];
|
||||||
records = [af recordsForEntriesFromDate: fromDate toDate: toDate];
|
records = [af recordsForEntriesFromDate: fromDate toDate: toDate];
|
||||||
max = [records count];
|
max = [records count];
|
||||||
alarms = [NSMutableArray arrayWithCapacity: max];
|
alarms = [NSMutableArray arrayWithCapacity: max];
|
||||||
|
|
|
@ -53,6 +53,9 @@
|
||||||
#import <Appointments/SOGoAptMailReminder.h>
|
#import <Appointments/SOGoAptMailReminder.h>
|
||||||
#import <WEExtensions/WEResourceManager.h>
|
#import <WEExtensions/WEResourceManager.h>
|
||||||
|
|
||||||
|
#import <GDLContentStore/GCSChannelManager.h>
|
||||||
|
#import <GDLContentStore/GCSFolderManager.h>
|
||||||
|
|
||||||
#import "SOGoEAlarmsNotifier.h"
|
#import "SOGoEAlarmsNotifier.h"
|
||||||
|
|
||||||
@implementation SOGoEAlarmsNotifier
|
@implementation SOGoEAlarmsNotifier
|
||||||
|
@ -225,6 +228,8 @@
|
||||||
|
|
||||||
- (BOOL) run
|
- (BOOL) run
|
||||||
{
|
{
|
||||||
|
GCSChannelManager *cm;
|
||||||
|
GCSFolderManager *fm;
|
||||||
NSArray *arguments, *alarms;
|
NSArray *arguments, *alarms;
|
||||||
NSCalendarDate *startDate, *toDate;
|
NSCalendarDate *startDate, *toDate;
|
||||||
NSDictionary *d;
|
NSDictionary *d;
|
||||||
|
@ -292,6 +297,10 @@
|
||||||
nameInContainer: [[d objectForKey: @"record"] objectForKey: @"c_name"]];
|
nameInContainer: [[d objectForKey: @"record"] objectForKey: @"c_name"]];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GCSFolder has opened a channel; close it before ending the process
|
||||||
|
fm = [GCSFolderManager defaultFolderManager];
|
||||||
|
cm = [fm channelManager];
|
||||||
|
[cm releaseAllChannels];
|
||||||
|
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue