Hi Dean, I added that change and yes you're right it looks like the code breaks when the dispatcher is on a different subnet. Please do make a launchpad bug and I'll look at it when I get a chance.
Thanks, Matt (in the LAVA Lab) On 31 October 2013 10:04, Dean Arnold <dean.arn...@arm.com> wrote: > I have now resolved the issues mentioned in the previous email, and in > doing so upgraded my LAVA instance to the latest version. This pulled in a > commit to use 'ip route get' to detect which interface is connected to the > lava dispatcher. > > This has resulted in our TC2 jobs failing with the following error when > attempting to boot the master image: > > root@master [rc=0]# 2013-10-31 02:25:02 PM INFO: Waiting for network to > come up > LC_ALL=C ping -W4 -c1 10.1.103.191 > PING 10.1.103.191 (10.1.103.191) 56(84) bytes of data. > 64 bytes from 10.1.103.191: icmp_req=1 ttl=62 time=0.370 ms > > --- 10.1.103.191 ping statistics --- > 1 packets transmitted, 1 received, 0% packet loss, time 0ms > rtt min/avg/max/mdev = 0.370/0.370/0.370/0.000 ms > root@master [rc=0]# > ifconfig `ip route get 10.1.103.191 | cut -d ' ' -f3` | grep 'inet addr' > |awk -F: '{split($2,a," "); print "<" a[1] ">"}' > 10.1.99.1: error fetching interface information: Device not found > root@master [rc=0]# > > 2013-10-31 02:26:12 PM ERROR: Unable to determine target image IP address > 2013-10-31 02:26:12 PM INFO: CriticalError > 2013-10-31 02:26:12 PM WARNING: [ACTION-E] deploy_linaro_android_image is > finished with error (Unable to determine target image IP address). > > The reason for this being that the command used assumes that the interface > will be in the 3rd field when doing the cut. However we are seeing that > the output of ip route get 10.1.103.191 actually gives this: > > $ ip route get 10.1.103.197 > 10.1.103.197 via 10.1.99.1 dev eth0 src 10.1.99.87 > Cache > > And the "cut -d ' ' -f3" bit then gives you 10.1.99.1, which ifconfig is > unable to cope with. I suspect the issue is because our dispatcher is on a > different subnet to our target devices, hence the "via 10.1.99.1" in the > output. > > I agree that it makes sense to use 'ip route get' to determine the > interface, though I was wondering if you could provide us with a more > flexible parsing of the output please? I can raise a launchpad bug for > this if you would like? > > Thanks > Dean > > > -----Original Message----- > > From: Dean Arnold > > Sent: 30 October 2013 10:21 > > To: Dean Arnold; 'linaro-validation@lists.linaro.org Validation' > > Cc: Basil Eljuse; Ian Spray > > Subject: RE: null value in column "admin_notifications" violates not- > > null constraint > > > > Hi All > > > > I was wondering if you could help me please? > > > > I have managed to get my instance of LAVA working again, however now I > > am seeing issues were every time a job is submitted, it is submitted > > twice and both jobs grab the test resource, meaning we are seeing some > > bizarre behaviour in the test run. See attached log. > > > > I am also seeing this when I attempt an upgrade: > > > > + set +x > > + lava-server manage syncdb --noinput > > WARNING:root:This instance will not use sentry as SENTRY_DSN is not > > configured > > + set +x > > + lava-server manage migrate --noinput > > WARNING:root:This instance will not use sentry as SENTRY_DSN is not > > configured > > Traceback (most recent call last): > > File "/srv/lava/instances/production/bin/lava-server", line 55, in > > <module> > > lava_server.manage.main() > > File "/srv/lava/.cache/git-cache/exports/lava-server/2013-10-17- > > 97c7da5/lava_server/manage.py", line 128, in main > > run_with_dispatcher_class(LAVAServerDispatcher) > > File "/srv/lava/.cache/eggs/lava_tool-0.7- > > py2.7.egg/lava_tool/dispatcher.py", line 45, in > > run_with_dispatcher_class > > raise cls.run() > > File "/srv/lava/.cache/eggs/lava_tool-0.7- > > py2.7.egg/lava/tool/dispatcher.py", line 147, in run > > raise SystemExit(cls().dispatch(args)) > > File "/srv/lava/.cache/eggs/lava_tool-0.7- > > py2.7.egg/lava/tool/dispatcher.py", line 137, in dispatch > > return command.invoke() > > File "/srv/lava/.cache/git-cache/exports/lava-server/2013-10-17- > > 97c7da5/lava_server/manage.py", line 116, in invoke > > execute_manager(settings, ['lava-server'] + self.args.command) > > File "/srv/lava/.cache/eggs/Django-1.4.2- > > py2.7.egg/django/core/management/__init__.py", line 459, in > > execute_manager > > utility.execute() > > File "/srv/lava/.cache/eggs/Django-1.4.2- > > py2.7.egg/django/core/management/__init__.py", line 382, in execute > > self.fetch_command(subcommand).run_from_argv(self.argv) > > File "/srv/lava/.cache/eggs/Django-1.4.2- > > py2.7.egg/django/core/management/base.py", line 196, in run_from_argv > > self.execute(*args, **options.__dict__) > > File "/srv/lava/.cache/eggs/Django-1.4.2- > > py2.7.egg/django/core/management/base.py", line 232, in execute > > output = self.handle(*args, **options) > > File "/srv/lava/.cache/eggs/South-0.7.5- > > py2.7.egg/south/management/commands/migrate.py", line 107, in handle > > ignore_ghosts = ignore_ghosts, > > File "/srv/lava/.cache/eggs/South-0.7.5- > > py2.7.egg/south/migration/__init__.py", line 199, in migrate_app > > applied_all = check_migration_histories(applied_all, delete_ghosts, > > ignore_ghosts) > > File "/srv/lava/.cache/eggs/South-0.7.5- > > py2.7.egg/south/migration/__init__.py", line 88, in > > check_migration_histories > > raise exceptions.GhostMigrations(ghosts) > > south.exceptions.GhostMigrations: > > > > ! These migrations are in the database but not on disk: > > <lava_scheduler_app: > > 0033_auto__add_field_testjob_admin_notifications> > > ! I'm not trusting myself; either fix this yourself by fiddling > > ! with the south_migrationhistory table, or pass --delete-ghost- > > migrations > > ! to South to have it delete ALL of these records (this may not be > > good). > > + die 'Failed to run database migrations' > > + echo 'Failed to run database migrations' > > + exit 1 > > > > I suspect that this is the underlying issue. Could you please > > recommend the best way to go about fixing a ghost migration issue > > please? It mentions to go fiddling in the database, but I would rather > > not hack away blindly :) > > > > Thanks > > Dean > > > > > > > -----Original Message----- > > > From: Dean Arnold > > > Sent: 25 October 2013 13:01 > > > To: linaro-validation@lists.linaro.org Validation > > > Cc: Basil Eljuse; Ian Spray > > > Subject: null value in column "admin_notifications" violates not-null > > > constraint > > > > > > Hi All, > > > > > > I have recently carried out an upgrade of LAVA and I am now seeing an > > > issue, where I am unable to trigger any jobs. The error listed in > > > /srv/lava/instances/production/var/log/lava-scheduler.log can be seen > > > below. > > > > > > I have checked the database column in question (admin_notifications > > in > > > the lava_scheduler_app_testjob table?) and the contents is as it says > > > null. I have tried populating this column with a non-null string in > > > an attempt to make Django happy, but I am still seeing the problem. > > > > > > I am not sure where the corruption happened, I presume something went > > > wrong in the upgrade stage. Would it be possible to give me an > > example > > > of what should be in this column and I will add the data manually to > > > try and resolve the problem. > > > > > > Thanks > > > Dean > > > > > > ############################### > > > > > > > > > 2013-10-25 11:51:55,364 [ERROR] > > > [lava_scheduler_daemon.service.JobQueue] IntegrityError: null value > > in > > > column "admin_notifications" violates not-null constraint > > > > > > Traceback (most recent call last): > > > File "/usr/lib/python2.7/threading.py", line 524, in __bootstrap > > > self.__bootstrap_inner() > > > File "/usr/lib/python2.7/threading.py", line 551, in > > > __bootstrap_inner > > > self.run() > > > File "/usr/lib/python2.7/threading.py", line 504, in run > > > self.__target(*self.__args, **self.__kwargs) > > > --- <exception caught here> --- > > > File "/srv/lava/.cache/eggs/Twisted-12.1.0-py2.7-linux- > > > x86_64.egg/twisted/python/threadpool.py", line 167, in _worker > > > result = context.call(ctx, function, *args, **kwargs) > > > File "/srv/lava/.cache/eggs/Twisted-12.1.0-py2.7-linux- > > > x86_64.egg/twisted/python/context.py", line 118, in callWithContext > > > return self.currentContext().callWithContext(ctx, func, *args, > > > **kw) > > > File "/srv/lava/.cache/eggs/Twisted-12.1.0-py2.7-linux- > > > x86_64.egg/twisted/python/context.py", line 81, in callWithContext > > > return func(*args,**kw) > > > File "/srv/lava/.cache/git-cache/exports/lava-server/2013-10-17- > > > 97c7da5/lava_scheduler_daemon/dbjobsource.py", line 70, in wrapper > > > return func(*args, **kw) > > > File "/srv/lava/.cache/git-cache/exports/lava-server/2013-10-17- > > > 97c7da5/lava_scheduler_daemon/dbjobsource.py", line 242, in > > > getJobList_impl > > > job_list = self._assign_jobs(job_list) > > > File "/srv/lava/.cache/git-cache/exports/lava-server/2013-10-17- > > > 97c7da5/lava_scheduler_daemon/dbjobsource.py", line 205, in > > > _assign_jobs > > > job_list = self._get_health_check_jobs() > > > File "/srv/lava/.cache/git-cache/exports/lava-server/2013-10-17- > > > 97c7da5/lava_scheduler_daemon/dbjobsource.py", line 121, in > > > _get_health_check_jobs > > > job_list.append(self._getHealthCheckJobForBoard(device)) > > > File "/srv/lava/.cache/git-cache/exports/lava-server/2013-10-17- > > > 97c7da5/lava_scheduler_daemon/dbjobsource.py", line 286, in > > > _getHealthCheckJobForBoard > > > return TestJob.from_json_and_user(job_json, user, True) > > > File "/srv/lava/.cache/git-cache/exports/lava-server/2013-10-17- > > > 97c7da5/lava_scheduler_app/models.py", line 622, in > > from_json_and_user > > > job.save() > > > File "/srv/lava/.cache/eggs/django_restricted_resource-0.2.7- > > > py2.7.egg/django_restricted_resource/models.py", line 71, in save > > > return super(RestrictedResource, self).save(*args, **kwargs) > > > File "/srv/lava/.cache/eggs/Django-1.4.2- > > > py2.7.egg/django/db/models/base.py", line 463, in save > > > self.save_base(using=using, force_insert=force_insert, > > > force_update=force_update) > > > File "/srv/lava/.cache/eggs/Django-1.4.2- > > > py2.7.egg/django/db/models/base.py", line 551, in save_base > > > result = manager._insert([self], fields=fields, > > > return_id=update_pk, using=using, raw=raw) > > > File "/srv/lava/.cache/eggs/Django-1.4.2- > > > py2.7.egg/django/db/models/manager.py", line 203, in _insert > > > return insert_query(self.model, objs, fields, **kwargs) > > > File "/srv/lava/.cache/eggs/Django-1.4.2- > > > py2.7.egg/django/db/models/query.py", line 1593, in insert_query > > > return query.get_compiler(using=using).execute_sql(return_id) > > > File "/srv/lava/.cache/eggs/Django-1.4.2- > > > py2.7.egg/django/db/models/sql/compiler.py", line 910, in execute_sql > > > cursor.execute(sql, params) > > > File "/srv/lava/.cache/eggs/Django-1.4.2- > > > py2.7.egg/django/db/backends/postgresql_psycopg2/base.py", line 52, > > in > > > execute > > > return self.cursor.execute(query, args) > > > django.db.utils.IntegrityError: null value in column > > > "admin_notifications" violates not-null constraint > > > > > > > > > 2013-10-25 11:51:55,365 [ERROR] [sentry.errors] No servers > > configured, > > > and sentry not installed. Cannot send message > > -- IMPORTANT NOTICE: The contents of this email and any attachments are > confidential and may also be privileged. If you are not the intended > recipient, please notify the sender immediately and do not disclose the > contents to any other person, use it for any purpose, or store or copy the > information in any medium. Thank you. > > ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, > Registered in England & Wales, Company No: 2557590 > ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, > Registered in England & Wales, Company No: 2548782 > > > _______________________________________________ > linaro-validation mailing list > linaro-validation@lists.linaro.org > http://lists.linaro.org/mailman/listinfo/linaro-validation >
_______________________________________________ linaro-validation mailing list linaro-validation@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-validation