database_nop: Return OID on object store attempt 73/145773/6
authorPaweł Szewczyk <p.szewczyk@samsung.com>
Wed, 23 Aug 2017 15:19:31 +0000 (17:19 +0200)
committerPaweł Szewczyk <p.szewczyk@samsung.com>
Fri, 25 Aug 2017 08:09:07 +0000 (10:09 +0200)
Change-Id: I44b91130f9a389da07dc9d351f1e4c95d8f909b8
Signed-off-by: Paweł Szewczyk <p.szewczyk@samsung.com>
src/core/event_processor.c
src/database/database_nop.c

index c28077f3273de34e320d12732ac464d88880b8dc..1f0dd7a2e996a07b9fc1d3c44033126f59922845 100644 (file)
@@ -135,14 +135,23 @@ int event_processor_report_event(struct faultd_event *ev)
 {
        struct faultd_object *obj;
        faultd_oid_t oid;
+       int ret;
 
        faultd_object_new(&obj);
-       database_new_oid(&oid);
+       ret = database_new_oid(&oid);
+       if (ret < 0) {
+               log_warning_errno(ret, "Database could not create new OID: %m");
+               goto unref_obj;
+       }
+
        faultd_object_append_oid(obj, database_get_id_key(), &oid);
        faultd_event_serialize(ev, obj);
 
-       database_store(obj, &ev->oid);
+       ret = database_store(obj, &ev->oid);
+       if (ret < 0)
+               log_warning_errno(ret, "Could not save event to database: %m");
 
+unref_obj:
        faultd_object_unref(obj);
 
        return nqueue_append(&event_processor.pending_events,
index aba5526f64e8f849ed5ccf258e963d623fbc62e6..0badc189b74f03108601825d204dc9d5ceb1621a 100644 (file)
@@ -19,6 +19,7 @@
 #include "database.h"
 
 #define NOP_DEFAULT_OID "NOP"
+#define NOP_ID_KEY_NAME "id"
 
 struct nop_adapter {
        struct faultd_database_adapter database_adapter;
@@ -40,12 +41,6 @@ static void cleanup_nop_adapter(struct faultd_module *module)
 {
 }
 
-static int nop_store(struct faultd_database_adapter *adapter,
-                                        struct faultd_object *obj, faultd_oid_t *oid)
-{
-       return 0;
-}
-
 static int nop_get_by_oid(struct faultd_database_adapter *adapter,
                                                  faultd_oid_t *oid, struct faultd_object *result)
 {
@@ -66,6 +61,21 @@ static int nop_new_oid(faultd_oid_t *oid)
        return 0;
 }
 
+static int nop_store(struct faultd_database_adapter *adapter,
+                                        struct faultd_object *obj, faultd_oid_t *oid)
+{
+       int ret;
+
+       ret = faultd_object_get_oid(obj, NOP_ID_KEY_NAME, oid);
+       if (ret == -ENOENT) {
+               nop_new_oid(oid);
+               ret = 0;
+       }
+
+       return ret;
+}
+
+
 static int nop_get_well_known_oid(const char *name, faultd_oid_t *oid)
 {
        return nop_new_oid(oid);
@@ -85,7 +95,7 @@ static struct nop_adapter nop_adapter = {
                        .cleanup = cleanup_nop_adapter,
                        .node = LIST_HEAD_INIT(nop_adapter.database_adapter.module.node),
                },
-               .id_key = "id",
+               .id_key = NOP_ID_KEY_NAME,
                .store = nop_store,
                .get_by_oid = nop_get_by_oid,
                .load = nop_load,