1. Field of the Invention
The invention generally relates to distribution of multimedia content in a networked environment. More particularly, the invention relates to a system and methods for scheduling multimedia content for broadcast.
2. Description of Related Technology
The Internet comprises a web of computers and networks widely spread throughout the world. The Internet currently comprises millions of network connections, and is used by millions of people for business, education, entertainment, and/or basic communication purposes.
Digital content, such as sound recordings, songs, for example, are often transferred across the Internet. In addition to the basic transfer of song files, numerous network enabled radio stations have been introduced, which provide content to listeners at computers across the Internet. Network enabled radio has significantly increased the magnitude and variety of content to recipients, as compared to conventional over-the-air radio broadcasts. One of the most important technologies underlying Internet radio is streaming technology, some times called streaming media, which allows a user to view and hear digitized content—audio, as well as video and animation—as it downloads. The client receives the media in real time without having to wait for clips to be downloaded.
Streaming technology allows delivery of content in a variety of ways:
Streaming technology is based on the real-time streaming protocol (RTSP), a protocol for providing streaming multimedia, usually in one-to-many applications over unicast or multicast. RTSP employs the technique of streaming, which breaks data into packets sized according to the available bandwidth between client and server. When the client has received a sufficient number of packets, a practice known as buffering, the user's software can be playing one packet, decompressing another, and downloading yet another, thus enabling a user to listen to the real-time file almost immediately, as the media file downloads. Live data feeds, as well as stored clips are handled in this manner.
Just as over-the-air radio stations do, network-enabled radio stations program content for broadcast in advance. Thus, there exists a need for tools to create and manage program schedules for Internet audio broadcasts. Various methods and means have been proposed to meet this need. M. Day, L. Yeung, Method of delivering seamless and continuous presentation of multimedia data files to a target device by assembling and concatenating multimedia segments in memory, U.S. Pat. No. 5,996,105 (Nov. 30, 1999) describes generation of playlists, wherein a playlist constitutes a listing of segments selected for presentation. The reference is silent, however, as to how this is to be done.
V. Krishnan and G. Chang, Customized Internet radio, Proc. 9th International World Wide Web Conference, Amsterdam, Netherlands, (May 2000) describes a framework for managing and customizing audio broadcast content on the Internet. The described framework includes an Internet radio station that makes it possible to create and manage program schedules for Internet audio broadcasts. It allows specific radio stations or genre to be scheduled in time slots, and provides alerts and dynamic changes based on the availability of specified content according to a previously defined user profile. Thus, while a schedule is generated, the schedule only specifies time slots to be allocated to one radio station or another. There is no teaching or suggestion of rule-based scheduling of media objects such as songs and ads. Furthermore, while the scheduler can service more than one profile, the scheduler cannot schedule the actual media for several different channels or radio stations.
W. Sequeira, System and method for a master scheduler, U.S. Pat. No. 6,222,530 (Apr. 24, 2001) describes a scheduler wherein a programmer enters a programming schedule into a master scheduler's data models, whereupon the master scheduler processes the schedule and creates a number of tasks based on the schedule. Each task is then distributed to a slave task scheduler on the relevant media server for execution at the proper time. The slave task scheduler is adapted to track the tasks given to it, and to prepare a media device to send the scheduled information at the appropriate time. While the scheduler is capable of creating a list of tasks based on a schedule manually created by a programmer, there is no teaching or suggestion of a scheduler that actually creates the schedule, using rotation codes and patterns determined by a programmer and programming rules as inputs.
Y. Brown, M. Walker, Method of providing targeted advertisements to a computer mediated communications network, U.S. Pat. No. 6,601,041 (Jul. 29, 2003) describes a targeting system and method that is both intelligent and interactive. A queue builder generates priority queues according to predetermined rules and profile definitions. A queue manager receives the priority queues output from the queue builder and provides them to a computer-mediated communications network. While a queue builder assembles content segments into a queue according to a user profile and a set of rules, there is no description of a scheduler that monitors and updates a plurality of media streams using producer threads that generate tasks, and worker threads that consume the tasks from a queue and execute them.
M. Bookspan, S. Parasnis, P. Warrin, P. Poon, P. Patel, Scheduling presentation broadcasts in an integrated network environment, U.S. Pat. No. 6,636,888 (Oct. 21, 2003) describes a system that partially automates scheduling of a presentation broadcast over a network. The approach described, however, doesn't relate to streaming technology. The presentation is created using a computer program such as POWERPOINT (MICROSOFT CORPORATION, Redmond Wash.). Broadcast of the resulting file to specified recipients is facilitated through use of the calendaring capabilities of such products as MEETINGMAKER or OUTLOOK (both MICROSOFT CORPORATION).
It would thus be a significant advance in the art to provide a multimedia scheduler for streaming multimedia capable of scheduling and maintaining streams for a plurality of channels. It would be advantageous to provide music directors the capability of assigning rotation codes to the media items on their playlists. It would be a further advantage to provide the capability of scheduling actual items such as songs and ads based on the rotation codes, and a series of broadcast rules. It would also be beneficial for the scheduler to be able to service multiple channels or radio stations at the same time. Furthermore, it would also advance the art to provide a scheduler that periodically monitors and updates media streams of a predetermined length, adding media items as needed to maintain the predetermined length by means of producer and consumer threads and a task queue.
A song and ad scheduler supporting clip-based and stream-based scheduling of songs and ads, capable of generating, for example, six hours of song/ad schedule ahead of time. Having multiple channel capability, the scheduler uses as input:
The scheduler is based on a producer-consumer model for distributing work. Producer threads periodically scan the system for work that needs to be done. When a producer thread encounters work to be done, such as adding to the schedule of a channel, the producer thread places a work request into a queue. Worker threads, aka consumers, consume the work requests by fulfilling the requested work.
The producer consumer model is embodied in a work manager that includes:
The work manager component is deliberately independent of the song and ad scheduling logic, so that it can function as a job scheduler in other applications.
Additional components of the system include:
The invention provides a multimedia scheduler for a network-based multimedia broadcast service. The invention is particularly useful in scheduling multimedia items such as songs and ads in an Internet broadband radio setting; however as will be described in greater detail below, the scheduling system incorporates a work management component that is deployable, independent of the scheduling logic, as a task scheduler for other applications. The multimedia scheduler uses the following as input:
Referring now to
As shown, the songs, or media items, originally are obtained from storage media 113 such as CD's (compact disks). A CD is first “ripped” and “sliced” 114; that is, the songs, or other media are extracted from the CD and separated into individual tracks, whereupon they are encoded to one or more file formats suitable for streaming. As shown here, the media items are translated to the REAL media format (REAL NETWORKS, INC., Seattle Wash.), and/or the MP3 (MOTION PICTURE EXPERTS GROUP) format. The encoded files are saved to a storage component 111, 112, such as a disk array. Additionally, metadata for each media file is saved to the database 104.
Using a first tool 103 to retrieve the song metadata from the database 104, the music director or DJ for the channel creates a playlist, and assigns rotation codes to the individual media items of the playlist. In the preferred embodiment, a rotation code is a single, alphanumeric character, wherein the DJ defines the characteristics associated with the rotation code. For example, one DJ might use “H” for “Hot Hits” he wants to play the most, and the number “1” for holiday songs he does not want to schedule except during the appropriate time of year. In another embodiment of the invention, the rotation codes are predefined frequency codes. Alternatively, the DJ can create multiple playlists, and instead of assigning rotation codes to each song individually, he assigns a rotation code to each playlist.
The rotation codes having been assigned, the DJ uses a second tool, 102, to create a rotation clock to schedule songs in the desired order based on the song rotation codes. The rotation preferably consists of a linear set of rotation codes previously assigned by the DJ, thus indicating the sequence of play for the various music types corresponding to the rotation codes defined by the DJ, as described above. Thus, the DJ schedules a series of rotation codes in a linear fashion for each rotation clock. A rotation clock may have a variable set of rotation codes assigned per channel; thus a rotation clock may take the form: A, D, B, C, A, E, A, F, D, B, 1, Z, and so on. Following the rotation clock, the scheduler assembles a schedule for a media stream, choosing a song having a rotation code that corresponds to the rotation code given in the rotation clock. Using the example rotation clock given above, the first code listed is ‘A;’ thus the scheduler schedules a song having ‘A’ as its rotation code, followed by a ‘D’ song, and then a ‘B’ song, and so on. In the case where multiple playlists have been created, with each playlist assigned a rotation code, the scheduler chooses the next song on the playlist having the rotation code that corresponds to the code in the rotation clock. During play, the rotation clock loops, repeating after each loop is complete. The second tool is additionally used to associate playlists to stations or channels, and to assign programming rules to channels. As the playlists, rotation codes, and rotation codes are created, and the associations to the channels made, the resulting information is saved to the database 104. In the current embodiment of the invention, the database is a relational database, including a plurality of tables. Any database model capable of accommodating one-to-many and many-to-many entity relationships is suitable for use in the system as described.
The media scheduler 101, retrieving the song metadata, the rotation codes, and the rotation clock from the database 104, generates a schedule that conforms to the programming rules for the channel, whereupon the schedule is saved to the database 104.
A stream sourcing content delivery system 109, housed on a server 115, goes to the database 104 and builds a physical stream, based on the schedule. The stream source content delivery system finds the order of delivery of content for the station, or channel, based on the schedule, and downloads a plurality of music files, for example 6 hours of music, to its hard drive to enable play back. The system then concatenates the files to create a stream, and awaits the request of one or more stream recipients. The stream source content delivery system provides flexibility and scalability for a large number of stations, e.g. up to one hundred stations, and/or listeners. Upon request from a client 106, a broadband stream 108 is delivered to the client. A server 110 serves the function of content delivery for the narrowband stream 107. Alternatively, the multimedia scheduler provides scheduling for clip-based broadcasts as well.
By means of application logic housed on an application server 105, the client 106 enables a user to view song metadata and scheduling information.
Multimedia Scheduler Overview
The scheduler has the capability of generating several hours worth of song and/or ad schedule in advance. The exact length of the schedule is configurable, for example six hours. Thus, it is primarily an off-line system, in which real-time and online availability are relatively unimportant. Although real-time performance and real-time response times are not a major requirement for the invention, the ability to scale and handle a large number of channels has great priority. The multimedia scheduler initially creates a schedule of a configurable length for each channel. In one embodiment of the invention, the preferred schedule length is seven hours. With the object of maintaining a schedule that is at least six hours long at any given time, the scheduler revisits the channel after approximately an hour to add more songs, thus restoring it to the starting length. To achieve this goal, the scheduler includes one or more work managers based on a producer-consumer design.
Major Components
It is here noted that the following description is expressed in the terminology of the object-oriented programming paradigm, which employs programming languages such as JAVA (SUN MICROSYSTEMS, INC., Santa Clara Calif.). Practitioners skilled in other programming languages, structured languages or modular languages for example, will be enabled to implement a system consistent with the scope and spirit of the invention using the principles that are taught herein.
Referring now to
The main application thread 201 initializes all the other components and waits for a termination request. The work manager 202, implemented according to a producer—consumer design, includes one or more producer threads, a work queue and one or more worker, or consumer, threads. The work manager also optionally contains a monitoring thread that reports on the work manager and a thread to delete symlinks (symbolic links) created during clip-based scheduling. In clip-based broadcast environments, because song and ad scheduling are done independently of each other, there are provided separate work managers dedicated to song scheduling and ad scheduling.
A property manager 203 provides access to all application properties, typically contained in one or both of a properties file 211 and a configuration database 212. Application properties are preferably loaded when the property manager is initialized by the main application thread 201.
A database connection manager 204, having a primary function of managing connection pooling, manages access to data sources 213.
A data cache 205 is provided for caching data common to all schedulers and data that does not change often. A static data cache object contains a concrete data cache instance for each data source defined in the system. Clients of the data cache 205 should first get a reference to the data source specific Cache and then access the cached data.
A communication module 207 accepts commands/requests on a server socket 206 and calls the appropriate routines to fulfill the requests.
Utility threads 208 do general house keeping functions such as periodically refreshing application properties and requesting GC (garbage collection).
Song and Ad schedulers encapsulate the logic (
Each Rule 209 is an object that implements a rules interface and is served by a rules factory 210. Each rule represents a constraint on the song selection. It should be appreciated that within the JAVA language, an “interface” represents a collection of method definitions and constant values. It is later implemented by classes that define the interface with the “implements” keyword.
A fuller description of each of the above components is provided in the sections below.
Logging System
To record transactions and activities, the multimedia scheduler further includes a logging system. In a preferred embodiment, the invention employs the Log4j logging subsystem, a freely available software package made available under the terms of the Apache Software License.
Significant advantages of Log4j include:
While Log4j is the preferred logging system, other logging systems are entirely consistent with the spirit and scope of the invention.
System Design Detail
The Application Class (201)
The main Application thread 201 constitutes an Application class. The main Application thread 201 is the main starting point of the multimedia scheduler. Its function is to initialize each of the individual components within the scheduler. After initializing each of the components, the Application thread 201 awaits a ‘stop’ or ‘abort’ signal. Each component initializes itself with properties accessible via the property manager 203. The flowchart provided in
Each of the above processes is described in greater detail below. After each of the system components is initialized, the main Application thread waits for a ‘stop’ or ‘abort’ request 311. When a request is transmitted via socket 206, the socket listener thread 207 notifies monitor 312. The main Application evaluates 313 the request. In the case of an ‘abort,’ the Application is stopped immediately 317. In the case of a ‘stop,’ the application is stopped gracefully, allowing the scheduler to complete jobs that are currently underway. Work managers are stopped 315, utility threads are stopped 315, a cleanup of the database connection manager 203 is performed 316, and the program is exited 317.
In addition to initializing the Application, the main Application thread also contains public static methods to control and report on the application. Thus, methods to stop/and/or abort the scheduler, to create a status report, refresh the system and rotate the main log file are implemented in the Application class. More will be said about these methods below.
Property Manager (214)
The property manager acts as the access point for all application properties. Application properties are found in two places:
All properties are loaded when the main application thread initializes the property manager. Subsequently, the property refresher utility thread 208 calls a method in the property manager 203 to refresh the properties at regular intervals.
The database connection manager 204 acts as the access point to get connections to a database, providing pooling of database connections. As well, the database connection manager maintains a thread-local cache of connections for each thread. The main public interface to the database connection manager includes at least the following methods:
Any component that gets a connection from the database connection manager has to return it by calling returnConnection() when it is done using the connection. When a component gets a connection by calling getConnection(), the database connection manager checks to see if a thread-local cache of connections for the thread, i.e. the component, exists and returns a connection from this cache if one is available. If a connection is not available in the thread-local cache, then the database connection manager must “check out” a connection from one of the ‘pooled data source’ pools 213. However it is preferable that get the connection from the thread-local cache; getting a connection from ‘pooled data source’ is a synchronized action and thus avoiding this activity makes it possible to avoid thread contention. The component receiving the connection has to return it by calling DBConnectionManager.returnConnection(), thus putting the connection back into the thread-local cache.
When a thread is finished with its work, preferably it flushes connections from this thread-local cache by calling DBConnectionManager.flushThreadConnections(). The flushThreadConnections() method “checks in” the connection back into the correct ‘pooled data source’ connection pool.
The ‘pooled data source’ connection pool does a sanity check on each connection requested from the pool. It creates a dummy prepared statement on the connection. Those skilled in the art will recognize that a “prepared statement” is an object containing a precompiled SQL (structured query language) statement. This object can then be used to efficiently execute this statement multiple times. Subsequently, the connection pool checks to see if an exception is thrown. If a thin JDBC (JAVA database connectivity) driver is being used, creation of the statement is enough to cause an exception on database unavailability. For an OCI (Oracle call interface, ORACLE CORPORATION, Foster City Calif.) driver, the executeQuery() method has to be invoked for an exception to be generated.
The connection pool discards the connection if an exception with any of the following messages is thrown:
The list of error messages is specified in Application.properties file and more error messages can be added as needed. The first five errors indicate a fatal problem with the database, such as the database being down or the network being down, that makes the database inaccessible. The last error is to prevent service stoppage due to any bugs in scheduler application that cause cursor leakages. Any error message means that the connection is bad and cannot be reused. The connection pool discards such connection after trying to close it.
If the database pool does not have any free connections when a database connection is requested by a client, the PooledDataSource opens a new connection to the database, as long as the pool size does not exceed a maximum pool size set in the Application.properties files. If a new connection cannot be opened, the current work is interrupted. Additionally, a message is logged in the logfile and syslog (system log). Accordingly, this mechanism discards stale connections and opens new connections dynamically and allows us to gracefully handle database shutdowns.
Multiple data sources can be configured in the Application.properties. For each data Source, the database connection manger creates a PooledDataSource object that is responsible for maintaining a Connection pool to the DataSource and for ensuring re-entrancy. The database connection manger itself simply maintains a list of PooledDataSource objects and acts as the public interface to access the connection pools.
One DataCache instance 215 per DataSource is defined by the DB.dataSources property. The DataCache 205 is used to cache some data that is fairly global and is not updated very frequently. Preferably the following data is cached:
There is a DataCacheRefresher thread 216 that reloads this data from the database. Since this data is fairly static, a refresh interval (which can be specified by the “DataCache.refreshinterval” property in the Application.properties file) of twenty-four hours is preferred.
Work Manager (202)
The Work Manager component (202) is the core piece of the server architecture for multimedia scheduler. It is the job scheduling system used to perform song and ad scheduling activities. As mentioned above, a Work Manager includes at least the following parts:
As mentioned above, the scheduler has to perform some work every hour for each channel. In order to model this behavior in a scalable fashion the invention employs a producer—consumer model of work management.
The Producer-Consumer design pattern is well suited for implementation of the scheduling logic, which requires that schedules are generated and incremented on a periodic basis. Additionally, the producer-consumer model also offers excellent scalability characteristics.
The work manager component 202 is designed to be independent of the scheduling logic. It is fairly generic in design and finds use in other applications that require a job scheduling system. (The work Manager module does depend on the property manager and database connection manager). Also, some level of indirection is employed in the work producers to keep them independent of the song/ad scheduling logic. This is achieved by having the work producer thread wrap another work creator object that actually creates the work objects 603. The work objects represent the work that needs to be done. The work creator object also decides the time interval after which it will create another batch of work objects 603. Each work producer thread contains one work creator object. The work manager creates work creator objects by invoking WorkCreatorFactories configured in the Application.properties file.
Each work manager 202 optionally has a refresh thread. The refresh interval is set in the properties file. The refresh thread periodically polls the WorkCreatorFactories to get new work creator objects. This functionality is needed to schedule ads for newly added channels. This refresh thread is also useful for detecting new configuration sets added to the Application.properties file at runtime.
A preferred embodiment of the invention provides separate work manager for song scheduling and ad scheduling. The song scheduling work manager creates a DeleteSymlink thread which is not created by the other work manager. The ad scheduling work manager schedules ads for Clip-based channels. Having a distinct Work Manager for ad scheduling, with its own work queue and worker threads, ensures that as scheduling jobs do not get backed up in the case of a sudden surge in the number of song scheduling jobs.
All parameters relating to the work manager, such as the number of work managers, and the assignment of work creators to work managers are configured via the Application.properties file, thus allowing great control over configuration of the scheduler application without requiring changes to the code. WorkManager properties are picked up at Application initialization time only. Hence any changes to the WorkManager properties are picked up only after a restart.
Communication Module
The scheduler is capable of receiving requests over a socket 206. The port number for the socket is configured in the Application.properties file by setting the property name Application.port.
To send a request to the scheduler, a client program, which can be in any language, opens a socket connection to the scheduler at the specified port and sends a request. Advantageously, the requests are in the form of XML (extensible markup language) strings, which readily enable the transmission, validation, and interpretation of data between applications.
Upon receiving a request, the scheduler returns an XML response.
The scheduler supports at least the following requests:
The tables below describe each request and its corresponding response:
The above scripts are provided for the sake of illustration only. Other methods and approaches to the sending of requests from a client to a server are also suited to the practice of the invention.
Utility Threads (208)
The main application thread also initializes each of several general house-keeping threads. These utility threads include at least:
The sleep interval for each thread is configured via Application.properties. If these property values are changed, they are picked up at runtime when the PropertyRefresher next refreshes the application properties in memory.
Song and Ad Scheduler
Song Scheduler
The multimedia scheduler supports both clip-based and stream-based channels.
As indicated above, writing the scheduled song to the database involves writing to three database tables:
The following columns in SONG_PLAY are populated by the scheduler:
The following columns in SONG_LOCATION are populated by the scheduler:
The following columns in SONG_METADATA are populated by the scheduler:
Create random number generator seeded with current time: data is made available in channel object;
While the current embodiment of the invention employs separate threads for scheduling songs and ads for clip-based channels, an alternate embodiment of the invention uses a single thread for both songs and ads, as previously described for stream-based channels. In such embodiment, the logic is substantially identical to that shown in
Additionally, a separate thread 1225 runs that deletes symlinks exceed a configurable age, fifteen minutes for example. Thus the application logic for stream-based and clip-based channels is similar, except that in the clip-based scheduler, logic is included that creates a symbolic links to the actual clip.
Ad Scheduler
The Rules Factory 210 maintains a cache of rule objects 209 in memory. There is one instance of a rule object per row in the RULES database table, described in greater detail below. Rule objects implement a Rules interface.
New Rules to be created and added to the system “on the fly”, according to the following procedure:
The next round of scheduling performed by the scheduler will enforce the rule for all channels that have been associated with the new rule.
Application Data
Database Tables and Their Relationships
Three existing tables listed below have a new column called ROTATION_CODE (VARCHAR2(40)) to hold the rotation code for the clip.
In addition to the new tables shown in the diagram, Scheduler also accesses the following DB tables:
The Application.properties file controls the behavior of the scheduler and can also specify parameters to tune the application.
The table below shows the Application.properties file and a description of each property.
Log4j.Properties
The log4j.properties file is used to configure logging parameters. The log4j documentation provides more information about various configuration options.
Below is a sample log4j.properties file
Syslog, Scheduler.Log and Scheduler_Log Table
Scheduler.Log Logfile
Error, Warning, Info and Debug log messages are be printed to a logfile. The name of the logfile is specified in log4j.properties, as shown above. It is expected that this logfile will be under scheduler/logs directory and called scheduler.log.
Scheduler log messages are prioritized into four levels: ERROR, WARN, INFO, DEBUG. Lower priority messages can be turned off by configuring log4j.properties file appropriately, as described above.
Error:
Error messages report problems that need to be acted upon. This could be data integrity problems that affect the scheduling of a channel and have to be reported to the content team. For example, when a rotation code used in the rotation clock for a channel has no clips in the database, the rotation code will be skipped, pointing to a serious programming error that needs to be corrected by the DJ. Alternatively, it is a system-related problem that needs to be addressed by the system operator.
Warn:
Warning messages report messages that should be noted by the system operator, but they have a lesser urgency than error messages. For example, if the physical file for a clip is not found, then the clip is not scheduled for a channel. This is a less critical problem since another clip can be played in its place. Nevertheless, it points to a problem that should be corrected. There could also be system related warnings that the system operator needs to act upon, such as memory usage coming close to the total memory allocated for the JVM (JAVA virtual machine).
Info:
Info messages are trace messages that help to understand the process flow in scheduler and convey an idea of what it is currently doing.
Periodic status messages such as current memory usage, loading of property files, Rule evaluation results are informational messages. Certain messages such as “Property not found” (which may look like a warning, but is not) are also informational messages when a default property value is found instead of a specific property.
Debug:
This is useful for diagnosing problems and should be not turned ON in production unless necessary for debugging problems.
In production, the ERROR level should always be turned ON. Ops may choose to keep WARN level turned on as well if they so wish. INFO level can be turned ON to help in understanding what the scheduler is doing and to get a better feel of the process flow. DEBUG level should be turned ON only while diagnosing problems.
Format of a Log Message
The format of a log message is as follows:
Where <optional_data> is some data, (such as configSetID or channelID, or clipID, etc), that is pertinent to the message.
Typically, the following optional_data is used while logging messages:
Log messages contain all, none, or a combination of this optional data.
An example is provided below:
Where:
SongSchedulerWM:Worker—48: Name of thread that logged this message. Threads are named based on the functions they perform. This makes it easy to identify the functional area that the log originates from by looking at the thread name. In this example, the thread name reveals that this message came from the 48th worker thread in the SongScheduling WorkManager's Worker thread pool.
The tables below lists the error and warning log messages printed by the scheduler (INFO and DEBUG messages are not listed here):
Warning Messages
Syslog
Events that need attention from the system operator are logged to the Syslog.
The table below lists the log messages that are logged to SYSLOG along with tier priority levels:
Sheduler_Log Database Table
In addition, the scheduler application also records exceptional situations that affect a song/ad schedule to a table called SHEDULER_LOG. Some examples of these exceptional message types are: Rule Violations, skipping a rotation code within a rotation clock for some reason, skipping a candidate song due to rule conflict or if file is not found, etc.
The sheduler_log_types are enumerated in the following table:
Fatal errors and errors needing immediate attention are sent to the SYSLOG. These include:
Run scheduler/bin/start.sh to start Scheduler.
Scheduler will abort at runtime if critical application parameters are not configured correctly.
Stopping Scheduler Gracefully
Run
script to stop Scheduler gracefully. This allows Scheduler to complete jobs that are currently underway. If a lot of jobs are underway, then stopping in this manner could take a few minutes.
This script sends an XML stop request to Scheduler over a socket.
Aborting Scheduler
Run
to stop Scheduler immediately. Use this only when necessary.
If for some reason this script fails to abort the process, you can do it from a unix command-line as follows:
If Scheduler is alive, <response name=ping>Alive</response>” appears on the console.
If Scheduler is dead something similar to “IO::Socket::INET:Connection refused at ./status.pl line 34
Cannot connect to Scheduler on localhost:8087.Scheduler may be down. at ./status.pl line 40.” Appears printed on the console.
This script can be run as part of a cron job to monitor whether Scheduler is alive or not. Since Ping.pl (and other perl scripts) talk to Scheduler over a socket, the cron job could be run on a machine other than the one running Scheduler.
Logfile Rotation
Scheduler logfile is rotated automatically at midnight every day.
Scheduler can also be configured to rotate the logfile when it reaches a certain size. Scheduler can be configured to specify the number of backup logfiles that should be retained by scheduler when logfiles are rotated.
During logfile rotation, the existing logfile is renamed and a new empty logfile is created and made the current logfile.
The above scripts are provided for the sake of example. Other methods of performing maintenance activities are also possible.
Although the invention has been described herein with reference to certain preferred embodiments, one skilled in the art will readily appreciate that other applications may be substituted for those set forth herein without departing from the spirit and scope of the present invention. Accordingly, the invention should only be limited by the Claims included below.
This application claims priority to prior U.S. provisional patent application No. 60/433,734, filed Dec. 13, 2002, titled Music Net, which is incorporated herein in its entirety by this reference made thereto.
Number | Name | Date | Kind |
---|---|---|---|
5325238 | Stebbings et al. | Jun 1994 | A |
5410343 | Coddington et al. | Apr 1995 | A |
5517672 | Reussner et al. | May 1996 | A |
5528513 | Vaitzbilt et al. | Jun 1996 | A |
5585866 | Miller et al. | Dec 1996 | A |
5616876 | Cluts | Apr 1997 | A |
5644715 | Baugher | Jul 1997 | A |
5671195 | Lee | Sep 1997 | A |
5734119 | France et al. | Mar 1998 | A |
5761417 | Henley et al. | Jun 1998 | A |
5784597 | Chiu et al. | Jul 1998 | A |
5787482 | Chen et al. | Jul 1998 | A |
5790174 | Richard et al. | Aug 1998 | A |
5792971 | Timis et al. | Aug 1998 | A |
5802502 | Gell et al. | Sep 1998 | A |
5819160 | Foladare et al. | Oct 1998 | A |
5892900 | Ginter et al. | Apr 1999 | A |
5907827 | Fang et al. | May 1999 | A |
5910987 | Ginter et al. | Jun 1999 | A |
5913039 | Nakamura | Jun 1999 | A |
5917912 | Ginter et al. | Jun 1999 | A |
5920861 | Hall et al. | Jul 1999 | A |
5930765 | Martin | Jul 1999 | A |
5943422 | Van Wie et al. | Aug 1999 | A |
5944778 | Takeuchi et al. | Aug 1999 | A |
5949876 | Ginter et al. | Sep 1999 | A |
5956321 | Yao et al. | Sep 1999 | A |
5956491 | Marks | Sep 1999 | A |
5959945 | Kleiman | Sep 1999 | A |
5963914 | Skinner et al. | Oct 1999 | A |
5982891 | Ginter et al. | Nov 1999 | A |
5991867 | Fosmark | Nov 1999 | A |
5996015 | Day et al. | Nov 1999 | A |
6029257 | Palmer | Feb 2000 | A |
6031797 | Van Ryzin et al. | Feb 2000 | A |
6041354 | Biliris et al. | Mar 2000 | A |
6044398 | Marullo et al. | Mar 2000 | A |
6061722 | Lipa et al. | May 2000 | A |
6067562 | Goldman | May 2000 | A |
6088722 | Herz | Jul 2000 | A |
6112023 | Dave et al. | Aug 2000 | A |
6112181 | Shear et al. | Aug 2000 | A |
6138119 | Hall et al. | Oct 2000 | A |
6157721 | Shear et al. | Dec 2000 | A |
6157940 | Marullo et al. | Dec 2000 | A |
6160812 | Bauman et al. | Dec 2000 | A |
6163683 | Dunn et al. | Dec 2000 | A |
6168481 | Culbertson et al. | Jan 2001 | B1 |
6173325 | Kukreja | Jan 2001 | B1 |
6185683 | Ginter et al. | Feb 2001 | B1 |
6185701 | Marullo et al. | Feb 2001 | B1 |
6192340 | Abecassis | Feb 2001 | B1 |
6195701 | Kaiserworth et al. | Feb 2001 | B1 |
6199076 | Logan et al. | Mar 2001 | B1 |
6222530 | Sequiera | Apr 2001 | B1 |
6226672 | DeMartin et al. | May 2001 | B1 |
6237786 | Ginter et al. | May 2001 | B1 |
6240185 | Van Wie et al. | May 2001 | B1 |
6243328 | Fenner et al. | Jun 2001 | B1 |
6243725 | Hempleman et al. | Jun 2001 | B1 |
6247061 | Douceir | Jun 2001 | B1 |
6248946 | Dwek | Jun 2001 | B1 |
6253193 | Ginter et al. | Jun 2001 | B1 |
6262569 | Carr et al. | Jul 2001 | B1 |
6263313 | Milsted et al. | Jul 2001 | B1 |
6263362 | Donoho et al. | Jul 2001 | B1 |
6266788 | Othmer et al. | Jul 2001 | B1 |
6300880 | Sitnik | Oct 2001 | B1 |
6314576 | Asamizuya et al. | Nov 2001 | B1 |
6332163 | Bowman-Amuah | Dec 2001 | B1 |
6356936 | Donoho et al. | Mar 2002 | B1 |
6363488 | Ginter et al. | Mar 2002 | B1 |
6366914 | Stern | Apr 2002 | B1 |
6389402 | Ginter et al. | May 2002 | B1 |
6421651 | Tedesco et al. | Jul 2002 | B1 |
6427140 | Ginter et al. | Jul 2002 | B1 |
6430537 | Tedesco et al. | Aug 2002 | B1 |
6434621 | Pezzillo et al. | Aug 2002 | B1 |
6434628 | Bowman-Amuah | Aug 2002 | B1 |
6438450 | DiLorenzo | Aug 2002 | B1 |
6438630 | DeMoney | Aug 2002 | B1 |
6441832 | Tao et al. | Aug 2002 | B1 |
6446080 | Van Ryzin et al. | Sep 2002 | B1 |
6446125 | Huang et al. | Sep 2002 | B1 |
6446126 | Huang et al. | Sep 2002 | B1 |
6449367 | Van Wie et al. | Sep 2002 | B2 |
6453316 | Karibe et al. | Sep 2002 | B1 |
6477541 | Korst et al. | Nov 2002 | B1 |
6477707 | King et al. | Nov 2002 | B1 |
6492469 | Willis et al. | Dec 2002 | B2 |
6496744 | Cook | Dec 2002 | B1 |
6502194 | Berman et al. | Dec 2002 | B1 |
6505160 | Levy et al. | Jan 2003 | B1 |
6519648 | Eyal | Feb 2003 | B1 |
6526411 | Ward | Feb 2003 | B1 |
6529586 | Elvins et al. | Mar 2003 | B1 |
6536037 | Guheen et al. | Mar 2003 | B1 |
6542445 | Ijichi et al. | Apr 2003 | B2 |
6546397 | Rempell | Apr 2003 | B1 |
6550057 | Bowman-Amuah | Apr 2003 | B1 |
6601041 | Brown et al. | Jul 2003 | B1 |
6609097 | Costello et al. | Aug 2003 | B2 |
6618424 | Van Wie et al. | Sep 2003 | B1 |
6658568 | Ginter et al. | Dec 2003 | B1 |
6668325 | Collberg et al. | Dec 2003 | B1 |
6772340 | Peinado et al. | Aug 2004 | B1 |
6772435 | Thexton et al. | Aug 2004 | B1 |
6910220 | Hickey et al. | Jun 2005 | B2 |
6950623 | Brown et al. | Sep 2005 | B2 |
7020710 | Weber et al. | Mar 2006 | B2 |
7020893 | Connelly | Mar 2006 | B2 |
7024485 | Dunning et al. | Apr 2006 | B2 |
7136906 | Giacalone, Jr. | Nov 2006 | B2 |
7185352 | Hallford et al. | Feb 2007 | B2 |
20010003828 | Peterson et al. | Jun 2001 | A1 |
20010030660 | Zainouline | Oct 2001 | A1 |
20020032907 | Daniels | Mar 2002 | A1 |
20020059237 | Kumagai et al. | May 2002 | A1 |
20020059624 | Machida et al. | May 2002 | A1 |
20020068525 | Brown et al. | Jun 2002 | A1 |
20020078056 | Hunt et al. | Jun 2002 | A1 |
20020082914 | Beyda et al. | Jun 2002 | A1 |
20020091761 | Lambert | Jul 2002 | A1 |
20020095510 | Sie et al. | Jul 2002 | A1 |
20020104099 | Novak | Aug 2002 | A1 |
20020108395 | Fujita et al. | Aug 2002 | A1 |
20020152876 | Hughes et al. | Oct 2002 | A1 |
20020152878 | Akashi | Oct 2002 | A1 |
20020198846 | Lao | Dec 2002 | A1 |
20030014436 | Spencer et al. | Jan 2003 | A1 |
20030018797 | Dunning et al. | Jan 2003 | A1 |
20030023973 | Monson et al. | Jan 2003 | A1 |
20030023975 | Schrader et al. | Jan 2003 | A1 |
20030028659 | Mesarina et al. | Feb 2003 | A1 |
20030028893 | Addington | Feb 2003 | A1 |
20030048418 | Hose et al. | Mar 2003 | A1 |
20030069768 | Hoffman et al. | Apr 2003 | A1 |
20030121050 | Kalva et al. | Jun 2003 | A1 |
20030126275 | Mungavan et al. | Jul 2003 | A1 |
20030135605 | Pendakun | Jul 2003 | A1 |
20030195974 | Ronning et al. | Oct 2003 | A1 |
20030236906 | Klemets et al. | Dec 2003 | A1 |
20040064507 | Sakata | Apr 2004 | A1 |
20050114757 | Sahota et al. | May 2005 | A1 |
20050159104 | Valley et al. | Jul 2005 | A1 |
Number | Date | Country |
---|---|---|
1113605 | Jul 1991 | EP |
0831608 | Mar 1998 | EP |
0875846 | Nov 1998 | EP |
0986046 | Mar 2000 | EP |
1178487 | Feb 2002 | EP |
1187423 | Mar 2002 | EP |
1229476 | Aug 2002 | EP |
1244021 | Sep 2002 | EP |
1267247 | Dec 2002 | EP |
1286351 | Feb 2003 | EP |
1187485 | Apr 2003 | EP |
2002108395 | Apr 2002 | JP |
2002318587 | Oct 2002 | JP |
2003068968 | Mar 2003 | JP |
497055 | Aug 2002 | TW |
WO 0110496 | Feb 2001 | WO |
WO 02063414 | Aug 2002 | WO |
Number | Date | Country | |
---|---|---|---|
20040215733 A1 | Oct 2004 | US |
Number | Date | Country | |
---|---|---|---|
60433734 | Dec 2002 | US |