Hi, unassigned means there is currently no job consumer for the job - its hard to tell why this is happening in your case. If you could create a simple test bundle maybe we could see what's going (wr)on(g).
Carsten 2013/10/26 Robert A. Decker <[email protected]> > And if 'unassigned' means that the job isn't necessarily local, then I'm > lost. I can't see how my job will be run. > > Rob > > On Oct 26, 2013, at 4:30 PM, Robert A. Decker wrote: > > > A little bit more… I understand what 'unassigned' means now - it means > I'm not giving the job a queue, which I think is ok. > > > > So, assuming 'assigned' and 'unassigned' jobs are local, then I think > the variable JobManagerConfiguration.localJobsPath is wrong since it only > has /var/eventing/jobs/assigned/... and there needs to be one for > unassigned too. > > > > and so the method: > > public boolean isLocalJob(final String jobPath) { > > return jobPath.startsWith(this.localJobsPathWithSlash); > > } > > > > can then evaluate to 'true' when the path has either 'assigned' or > 'unassigned'.. > > > > Rob > > > > > > On Oct 26, 2013, at 4:19 PM, Robert A. Decker wrote: > > > >> 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] > >> > >> > > > > -- Carsten Ziegeler [email protected]
