Details
-
Type: Monitor
-
Status: Closed
-
Priority: Major
-
Resolution: Done
-
Affects Version/s: None
-
Fix Version/s: 2021
-
Component/s: FIWARE-TECH-HELP
-
Labels:
-
HD-Chapter:Data
-
HD-Enabler:Cosmos
Description
Created question in FIWARE Q/A platform on 07-09-2015 at 09:09
Please, ANSWER this question AT https://stackoverflow.com/questions/32433444/fiware-cygnus-error
Question:
Fiware Cygnus Error
Description:
Looking for why my information was not persisting in Cosmos I have found this error in the log of cygnus repeated hundreds of times:
03 Sep 2015 02:20:18,491 ERROR [SinkRunner-PollingRunner-DefaultSinkProcessor] (com.telefonica.iot.cygnus.sinks.OrionSink.process:103) - Channel error (The Flume transaction could not be started. Details=begin() called when transaction is OPEN!)
03 Sep 2015 02:20:18,491 ERROR [SinkRunner-PollingRunner-DefaultSinkProcessor] (org.apache.flume.SinkRunner$PollingRunner.run:160) - Unable to deliver event. Exception follows.
org.apache.flume.EventDeliveryException: java.lang.IllegalStateException: begin() called when transaction is OPEN!
at com.telefonica.iot.cygnus.sinks.OrionSink.process(OrionSink.java:104)
at org.apache.flume.sink.DefaultSinkProcessor.process(DefaultSinkProcessor.java:68)
at org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:147)
at java.lang.Thread.run(Thread.java:701)
Caused by: java.lang.IllegalStateException: begin() called when transaction is OPEN!
at com.google.common.base.Preconditions.checkState(Preconditions.java:145)
at org.apache.flume.channel.BasicTransactionSemantics.begin(BasicTransactionSemantics.java:131)
at com.telefonica.iot.cygnus.sinks.OrionSink.process(OrionSink.java:101)
... 3 more
Is it a configuration error or a runtime error?
Thanks in advance.
Edit: This is a configuration file content of an agent:
- Copyright 2014 Telefónica Investigación y Desarrollo, S.A.U
- This file is part of fiware-cygnus (FI-WARE project).
- fiware-cygnus is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General
- Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any
- later version.
- fiware-cygnus is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
- details.
- You should have received a copy of the GNU Affero General Public License along with fiware-cygnus. If not, see
- http://www.gnu.org/licenses/.
- For those usages not covered by the GNU Affero General Public License please contact with iot_support at tid dot es
#=============================================
- To be put in APACHE_FLUME_HOME/conf/agent.conf
# - General configuration template explaining how to setup a sink of each of the available types (HDFS, CKAN, MySQL).
#=============================================
- The next tree fields set the sources, sinks and channels used by Cygnus. You could use different names than the
- ones suggested below, but in that case make sure you keep coherence in properties names along the configuration file.
- Regarding sinks, you can use multiple types at the same time; the only requirement is to provide a channel for each
- one of them (this example shows how to configure 3 sink types at the same time). Even, you can define more than one
- sink of the same type and sharing the channel in order to improve the performance (this is like having
- multi-threading).
cygnusagent.sources = http-source
cygnusagent.sinks = hdfs-sink
cygnusagent.channels = hdfs-channel
#=============================================
- source configuration
- channel name where to write the notification events
cygnusagent.sources.http-source.channels = hdfs-channel - source class, must not be changed
cygnusagent.sources.http-source.type = org.apache.flume.source.http.HTTPSource - listening port the Flume source will use for receiving incoming notifications
cygnusagent.sources.http-source.port = 5050 - Flume handler that will parse the notifications, must not be changed
cygnusagent.sources.http-source.handler = com.telefonica.iot.cygnus.handlers.OrionRestHandler - URL target
cygnusagent.sources.http-source.handler.notification_target = /notify - Default service (service semantic depends on the persistence sink)
cygnusagent.sources.http-source.handler.default_service = my_service - Default service path (service path semantic depends on the persistence sink)
cygnusagent.sources.http-source.handler.default_service_path = my_path - Number of channel re-injection retries before a Flume event is definitely discarded (-1 means infinite retries)
cygnusagent.sources.http-source.handler.events_ttl = 0 - Source interceptors, do not change
cygnusagent.sources.http-source.interceptors = ts - TimestampInterceptor, do not change
cygnusagent.sources.http-source.interceptors.ts.type = timestamp - GroupinInterceptor, do not change
#cygnusagent.sources.http-source.interceptors.gi.type = com.telefonica.iot.cygnus.interceptors.GroupingInterceptor$Builder - Grouping rules for the GroupingInterceptor, put the right absolute path to the file if necessary
- See the doc/design/interceptors document for more details
#cygnusagent.sources.http-source.interceptors.gi.grouping_rules_conf_file = /usr/cygnus/conf/grouping_rules.conf
- ============================================
- OrionHDFSSink configuration
- channel name from where to read notification events
cygnusagent.sinks.hdfs-sink.channel = hdfs-channel - sink class, must not be changed
cygnusagent.sinks.hdfs-sink.type = com.telefonica.iot.cygnus.sinks.OrionHDFSSink - Comma-separated list of FQDN/IP address regarding the HDFS Namenode endpoints
- If you are using Kerberos authentication, then the usage of FQDNs instead of IP addresses is mandatory
cygnusagent.sinks.hdfs-sink.hdfs_host = cosmos.lab.fiware.org - port of the HDFS service listening for persistence operations; 14000 for httpfs, 50070 for webhdfs
cygnusagent.sinks.hdfs-sink.hdfs_port = 14000 - username allowed to write in HDFS
cygnusagent.sinks.hdfs-sink.hdfs_username = my_username - OAuth2 token
cygnusagent.sinks.hdfs-sink.oauth2_token = my_token - how the attributes are stored, either per row either per column (row, column)
cygnusagent.sinks.hdfs-sink.attr_persistence = column - Hive FQDN/IP address of the Hive server
cygnusagent.sinks.hdfs-sink.hive_host = cosmos.lab.fiware.org - Hive port for Hive external table provisioning
cygnusagent.sinks.hdfs-sink.hive_port = 10000 - Kerberos-based authentication enabling
cygnusagent.sinks.hdfs-sink.krb5_auth = false - Kerberos username
cygnusagent.sinks.hdfs-sink.krb5_auth.krb5_user = krb5_username - Kerberos password
cygnusagent.sinks.hdfs-sink.krb5_auth.krb5_password = xxxxxxxxxxxxx - Kerberos login file
cygnusagent.sinks.hdfs-sink.krb5_auth.krb5_login_conf_file = /usr/cygnus/conf/krb5_login.conf - Kerberos configuration file
cygnusagent.sinks.hdfs-sink.krb5_auth.krb5_conf_file = /usr/cygnus/conf/krb5.conf
#=============================================
- hdfs-channel configuration
- channel type (must not be changed)
cygnusagent.channels.hdfs-channel.type = memory - capacity of the channel
cygnusagent.channels.hdfs-channel.capacity = 10000 - amount of bytes that can be sent per transaction
cygnusagent.channels.hdfs-channel.transactionCapacity = 1000
Activity
Transition | Time In Source Status | Execution Times | Last Executer | Last Execution Date | |||||
---|---|---|---|---|---|---|---|---|---|
|
3d 18h 34m | 1 | Fernando Lopez | 26/May/17 9:40 AM | |||||
|
2s | 1 | Fernando Lopez | 26/May/17 9:40 AM | |||||
|
2s | 1 | Fernando Lopez | 26/May/17 9:40 AM |