I'm trying to figure out why my jobs aren't being consumed. Here's one thing I 
found.

In JobManagerImpl.java, handleEvent method:

    public void handleEvent(final Event event) {
        if ( SlingConstants.TOPIC_RESOURCE_ADDED.equals(event.getTopic()) ) {
            final String path = (String) 
event.getProperty(SlingConstants.PROPERTY_PATH);
            final String rt = (String) 
event.getProperty(SlingConstants.PROPERTY_RESOURCE_TYPE);
            if ( (rt == null || ResourceHelper.RESOURCE_TYPE_JOB.equals(rt)) &&
                 this.configuration.isLocalJob(path) ) {
                synchronized ( this.directlyAddedPaths ) {
                    if ( directlyAddedPaths.remove(path) ) {
                        return;
                    }
                }
                this.backgroundLoader.loadJob(path);
            }
            this.jobScheduler.handleEvent(event);
        } else if ( Utility.TOPIC_STOP.equals(event.getTopic()) ) {


this.configuration.isLocalJob(path) evaluates as false and so my job is not 
added to the backgroundLoader, but instead gets sent to the scheduler. But 
because this is not a scheduled job type it isn't added to the queue by the 
jobScheduler.
                if ( path != null && 
path.startsWith(this.config.getScheduledJobsPathWithSlash())
                     && (resourceType == null || 
ResourceHelper.RESOURCE_TYPE_SCHEDULED_JOB.equals(resourceType))) {

For the JobManagerConfiguration.isLocalJob method:
    public boolean isLocalJob(final String jobPath) {
        return jobPath.startsWith(this.localJobsPathWithSlash);
    }

my 
jobPath=/var/eventing/jobs/unassigned/com.astracorp.core.datastore.gc.requested/2013/10/26/16/16/com.astracorp.core.datastore.gc.requested_622b9d5e-e949-490e-88b6-71e6498802a7_32
and 
JobManagerConfiguration.localJobsPathWithSlash=/var/eventing/jobs/assigned/622b9d5e-e949-490e-88b6-71e6498802a7/


Any ideas? What's the difference between /var/eventing/jobs/unassigned and 
/var/eventing/jobs/assigned?


Rob



On Oct 25, 2013, at 9:24 AM, Carsten Ziegeler wrote:

> Hi,
> 
> the JobConsumerManager is not public api and therefore not available to other 
> bundles.
> Looking at your example from the first post, it looks ok to me - it should 
> work without a specific queue configuration as the main queue is always 
> available.
> However your job consumer implementation shouldn't return null but a result.
> 
> Carsten
> 
> 
> 2013/10/25 Robert A. Decker <[email protected]>
> I think I'm having a maven dependency problem, but I'm just not sure...
> 
> Here's what my org.apache.sling.event bundle looks like:
> 
> 
> 
> 
> Here's how I declare the dependency:
>             <dependency>
>                 <groupId>org.apache.sling</groupId>
>                 <artifactId>org.apache.sling.event</artifactId>
>                 <version>3.3.1-SNAPSHOT</version>
>                 <scope>provided</scope>
>             </dependency>
> 
> 
> 
> As an experiment/debugging, when I try to call the jobConsumerManager service 
> directly like:
> 
>     @Reference
>     private JobConsumerManager jobConsumerManager = null;
> 
>         LOGGER.debug("executor:" + 
> jobConsumerManager.getExecutor(DatastoreGCService.TOPIC_DATASTORE_GC_REQUESTED));
>         LOGGER.debug("topics:" + jobConsumerManager.getTopics());
> 
> I get class not found errors:
> 
> 25│Caused by: java.lang.ClassNotFoundException: 
> org.apache.sling.event.impl.jobs.JobConsumerManager not found by astra-core 
> [103]                                                                   │te
> d │    at 
> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1500)
>  ~[na:na].in                                                                  
>      │
> 25│    at 
> org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:75)
>  ~[na:na].:1                                                                  
>                             │
> 25│    at 
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1923)
>  ~[na:na].ch                                                                  
>          │
> 25│    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
> ~[na:1.7.0_40].:                                                              
>                                                       │
> 25│    ... 34 common frames omitted...                                        
>                                                                               
>                                         │
> 25│25.10.2013 00:27:11.102 *ERROR* [FelixFrameworkWiring] astra-core 
> [com.astracorp.engine.commons.schedulers.DatastorePeriodicGC] Cannot register 
> Component (java.lang.NoClassDefFoundError: org/ap│
> 25│ache/sling/event/impl/jobs/JobConsumerManager)                             
>                                                                               
>                                         │
> 25│java.lang.NoClassDefFoundError: 
> org/apache/sling/event/impl/jobs/JobConsumerManager                           
>                                                                               
>      │
> 25│    at java.lang.Class.getDeclaredMethods0(Native Method) 
> ~[na:1.7.0_40].cr                                                             
>                                                          │
> 25│    at java.lang.Class.privateGetDeclaredMethods(Class.java:2521) 
> ~[na:1.7.0_40].ac                                                             
>                                                  │ch
> e.│    at java.lang.Class.getDeclaredMethods(Class.java:1845) 
> ~[na:1.7.0_40].nd                                                             
>                                                         │ef
> au│    at 
> org.apache.felix.scr.impl.helper.BindMethod.getServiceObjectAssignableMethod(BindMethod.java:389)
>  ~[org.apache.felix.scr-1.6.0.jar:na].Ba                                      
>            │
> 
> 
> 
> I've tried changing the scope to compile, I've tried moving back version 
> numbers, and nothing seems to work.
> 
> Any ideas?
> 
> 
> Rob
> 
> On Oct 24, 2013, at 7:09 PM, Robert A. Decker wrote:
> 
>> Hi,
>> 
>> I'm trying to implement the new job system using a recent sling build. 
>> org.apache.sling.event is at 3.3.1-SNAPSHOT. (updated this morning)
>> 
>> What I'm doing is very similar to the example at the sling website. And I 
>> can see my events being created under the /var/eventing/jobs/unassigned 
>> node, so creating the events seems to be working, but my consumer just isn't 
>> consuming them.
>> 
>> Here's how I create them:
>> 
>> jobManager.addJob(DatastoreGCService.TOPIC_DATASTORE_GC_REQUESTED, 
>> DatastoreGCService.DATASTORE_GC_REQUESTED_JOB_PROPERTIES);
>> 
>> TOPIC_DATASTORE_GC_REQUESTED = "com/astracorp/core/datastore/gc/requested";
>> DATASTORE_GC_REQUESTED_JOB_PROPERTIES = new HashMap<String,Object>();
>> 
>> 
>> Here's what my consumer looks like:
>> 
>> @Component(enabled = true, immediate = true, metatype = true)
>> @Service(value = JobConsumer.class)
>> @Property(name = JobConsumer.PROPERTY_TOPICS, value = 
>> {DatastoreGCService.TOPIC_DATASTORE_GC_REQUESTED})
>> public class DatastoreGCHandler implements JobConsumer {
>>    public static final Logger LOGGER = 
>> LoggerFactory.getLogger(DatastoreGCHandler.class);
>> 
>>    @Override
>>    public JobResult process(final Job job) {
>>        LOGGER.debug("process job called");
>>        return null;
>>    }
>> }
>> 
>> 
>> The consumer is listed in the services as:
>> [org.apache.sling.event.jobs.consumer.JobConsumer]
>> component.id 136
>> component.name       com.astracorp.engine.commons.handlers.DatastoreGCHandler
>> job.topics   com/astracorp/core/datastore/gc/requested
>> Service PID  com.astracorp.engine.commons.handlers.DatastoreGCHandler
>> 
>> 
>> 
>> Everything looks fine to me but it's just not consuming. Am I missing 
>> something? I notice that some components are not running, but I'm not sure 
>> which is required.
>> 
>> org.apache.sling.event.impl.jobs.deprecated.JobStatusProviderImpl : 
>> registered
>> org.apache.sling.event.impl.jobs.tasks.HistoryCleanUpTask : registered
>> org.apache.sling.event.jobs.QueueConfiguration : unsatisfied  (probably 
>> needs a config)
>> 
>> 
>> Rob
>> 
>> 
> 
> 
> 
> 
> -- 
> Carsten Ziegeler
> [email protected]

Reply via email to