View | Details | Raw Unified | Return to bug 32395
Collapse All | Expand All

(-)a/Koha/BackgroundJob.pm (-10 / +6 lines)
Lines 105-112 sub enqueue { Link Here
105
105
106
    my $borrowernumber = (C4::Context->userenv) ? C4::Context->userenv->{number} : undef;
106
    my $borrowernumber = (C4::Context->userenv) ? C4::Context->userenv->{number} : undef;
107
    $job_context->{interface} = C4::Context->interface;
107
    $job_context->{interface} = C4::Context->interface;
108
    my $json_context = $json->encode($job_context);
109
    my $json_args = $json->encode($job_args);
110
108
111
    $self->set(
109
    $self->set(
112
        {
110
        {
Lines 114-128 sub enqueue { Link Here
114
            type           => $job_type,
112
            type           => $job_type,
115
            queue          => $job_queue,
113
            queue          => $job_queue,
116
            size           => $job_size,
114
            size           => $job_size,
117
            data           => $json_args,
115
            data           => $json->encode($job_args),
118
            context        => $json_context,
116
            context        => $json->encode($job_context),
119
            enqueued_on    => dt_from_string,
117
            enqueued_on    => dt_from_string,
120
            borrowernumber => $borrowernumber,
118
            borrowernumber => $borrowernumber,
121
        }
119
        }
122
    )->store;
120
    )->store;
123
121
124
    $job_args->{job_id} = $self->id;
125
126
    my $conn;
122
    my $conn;
127
    try {
123
    try {
128
        $conn = $self->connect;
124
        $conn = $self->connect;
Lines 131-144 sub enqueue { Link Here
131
    };
127
    };
132
    return unless $conn;
128
    return unless $conn;
133
129
134
    $json_args = $json->encode($job_args);
135
    try {
130
    try {
136
        # This namespace is wrong, it must be a vhost instead.
131
        # This namespace is wrong, it must be a vhost instead.
137
        # But to do so it needs to be created on the server => much more work when a new Koha instance is created.
132
        # But to do so it needs to be created on the server => much more work when a new Koha instance is created.
138
        # Also, here we just want the Koha instance's name, but it's not in the config...
133
        # Also, here we just want the Koha instance's name, but it's not in the config...
139
        # Picking a random id (memcached_namespace) from the config
134
        # Picking a random id (memcached_namespace) from the config
140
        my $namespace = C4::Context->config('memcached_namespace');
135
        my $namespace = C4::Context->config('memcached_namespace');
141
        my $encoded_args = Encode::encode_utf8( $json_args ); # FIXME We should better leave this to Net::Stomp?
136
        my $encoded_args = Encode::encode_utf8(
137
            $json->encode( { job_id => $self->id } )
138
        );    # FIXME We should better leave this to Net::Stomp?
142
        $conn->send_with_receipt( { destination => sprintf("/queue/%s-%s", $namespace, $job_queue), body => $encoded_args } )
139
        $conn->send_with_receipt( { destination => sprintf("/queue/%s-%s", $namespace, $job_queue), body => $encoded_args } )
143
          or Koha::Exceptions::Exception->throw('Job has not been enqueued');
140
          or Koha::Exceptions::Exception->throw('Job has not been enqueued');
144
    } catch {
141
    } catch {
Lines 166-172 sub process { Link Here
166
163
167
    my $derived_class = $self->_derived_class;
164
    my $derived_class = $self->_derived_class;
168
165
169
    $args ||= {};
166
    $args ||= $self->json->decode($self->data);
170
167
171
    if ( $self->context ) {
168
    if ( $self->context ) {
172
        my $context = $self->json->decode($self->context);
169
        my $context = $self->json->decode($self->context);
173
- 

Return to bug 32395