@ -47,7 +47,7 @@ func dialRedis(rNotify redisNotify) (*redis.Pool, error) {
password := rNotify . Password
password := rNotify . Password
rPool := & redis . Pool {
rPool := & redis . Pool {
MaxIdle : 3 ,
MaxIdle : 3 ,
IdleTimeout : 240 * time . Second ,
IdleTimeout : 240 * time . Second , // Time 2minutes.
Dial : func ( ) ( redis . Conn , error ) {
Dial : func ( ) ( redis . Conn , error ) {
c , err := redis . Dial ( "tcp" , addr )
c , err := redis . Dial ( "tcp" , addr )
if err != nil {
if err != nil {
@ -113,13 +113,22 @@ func (r redisConn) Fire(entry *logrus.Entry) error {
rConn := r . Pool . Get ( )
rConn := r . Pool . Get ( )
defer rConn . Close ( )
defer rConn . Close ( )
data , err := entry . String ( )
// Fetch event type upon reflecting on its original type.
if err != nil {
entryStr , ok := entry . Data [ "EventType" ] . ( string )
return err
if ! ok {
return nil
}
}
_ , err = rConn . Do ( "RPUSH" , r . params . Key , data )
// Match the event if its a delete request, attempt to delete the key
if err != nil {
if eventMatch ( entryStr , [ ] string { "s3:ObjectRemoved:*" } ) {
if _ , err := rConn . Do ( "DEL" , entry . Data [ "Key" ] ) ; err != nil {
return err
}
return nil
} // else save this as new entry or update any existing ones.
if _ , err := rConn . Do ( "SET" , entry . Data [ "Key" ] , map [ string ] interface { } {
"Records" : entry . Data [ "Records" ] ,
} ) ; err != nil {
return err
return err
}
}
return nil
return nil