小编Lui*_*tni的帖子

Android Lollipop 5.0.1 SQLiteLog POSIX错误11 SQLite错误:3850

我在升级应用程序以支持Android Lollipop时遇到问题.该应用程序实现了一个SyncAdapter,它通过内容提供程序在数据库上写入.同时,用户正在浏览应用程序的前端,其中加载程序从数据库中读取相同的数据.加载程序还可以监听数据更改.

现在,如果我在前Lollipop设备上运行该程序,一切正常,没有任何错误输出.

在Lollipop上,我收到以下logcat消息:

11:20:59.344  22341-22376/com.example.com E/SQLiteLog? (10) POSIX Error : 11 SQLite Error : 3850
11:20:59.364  22341-22376/com.example.com E/SQLiteLog? (10) POSIX Error : 11 SQLite Error : 3850
11:20:59.364  22341-22376/com.example.com E/SQLiteLog? (10) POSIX Error : 11 SQLite Error : 3850
11:20:59.364  22341-22376/com.example.com E/SQLiteLog? (10) POSIX Error : 11 SQLite Error : 3850
Run Code Online (Sandbox Code Playgroud)

现在,来自SQLite文档:

(3850)SQLITE_IOERR_LOCK

SQLITE_IOERR_LOCK错误代码是SQLITE_IOERR的扩展错误代码,表示咨询文件锁定逻辑中的I/O错误.通常SQLITE_IOERR_LOCK错误表示获取PENDING锁定时出现问题.但是,它也可以指示Mac上使用的某些专用VFS上的各种锁定错误.一切似乎都在高水平上正常工作(即执行读取和写入)

和:

PENDING锁意味着持有锁的进程想要尽快写入数据库,并且只是等待所有当前的SHARED锁清除,以便它可以获得EXCLUSIVE锁.如果PENDING锁处于活动状态,则不允许对数据库使用新的SHARED锁,但允许继续使用现有的SHARED锁.

我知道SQLite版本已经被Lollipop中的几个主要版本更新了,所以我很容易认为错误是由于我无法隔离的SQLite的一些新行为.

但是,从更高级别的角度看,一切似乎都运行良好(App不会崩溃,执行读写操作,帧率不会下降 - 至少对人眼来说)但我不想忽略这个问题发布应用程序,直到我确定它不会导致数据损坏或麻烦.

也许我对棒棒糖关于锁和多进程数据库访问的一些重要更改缺失了,但我觉得这是一个关于Art/Dalvik域的较低级别的问题,因此必须在NDK上下文中修复.

有没有办法解决这个问题而不分发特定版本的SQLite?是否有任何清单/ SQLite选项来避免错误?

提前致谢

sqlite multithreading android posix android-5.0-lollipop

21
推荐指数
1
解决办法
2743
查看次数

Golang Cloud SDK - gcloud app deploy无法找到导入包

根据Google App Engine标准环境(Go API)的官方文档," 部署项目的首选工具 "现在是Cloud SDK,因此我们从goapp迁移到gcloud.

我们无法将Go项目部署到GAE,因为在"部署时"无法找到每个给定项目的所有子包.我们为每个GAE项目使用的典型文件夹结构如下:

-project-name
--app.yaml
--main.go
--assets
---package1
---package2
Run Code Online (Sandbox Code Playgroud)

当全局图书馆被放入系统时,GOPATH一切顺利.

gcloud app deploy我们现在运行得到这个:

You are about to deploy the following services:
 - yourproject/default/123456789 (from [/Path/to/app.yaml])
     Deploying to URL: [https://yourproject.appspot.com]

Do you want to continue (Y/n)?  Y

Beginning deployment of service [default]...
ERROR: (gcloud.app.deploy) Staging command [/path/to/yourproject/app.yaml /var/folders/b6/5ydn0wdn64jd32sxzzz48b7c0000gn/T/tmpbd4oiG] failed with return code [1].

------------------------------------ STDOUT ------------------------------------
------------------------------------ STDERR ------------------------------------
2017/03/24 10:25:58 failed analyzing /path/to/yourproject: cannot find package "yourpackage" in any of:
        ($GOROOT not …
Run Code Online (Sandbox Code Playgroud)

google-app-engine go google-cloud-platform gcloud

8
推荐指数
1
解决办法
1880
查看次数

在Google App Engine上处理并发请求

我正在几个平台上尝试并发请求处理.

该实验的目的是广泛衡量某些选定技术的能力范围.

我成立了一个Linux VM我的机器上有一个基本的围棋http服务器(香草http.HandleFunc中的http默认包).然后,服务器将计算fasta算法的修改版本,该算法将线程和进程限制为1,并返回结果.N设置为100000.算法运行大约2秒钟.我在Google App Engine项目中使用了相同的算法和逻辑.

该算法使用相同的代码编写,只是处理程序设置完成init()而不是main()根据GAE要求.

另一方面,Android客户端产生500个线程,每个线程并行发送一个GET请求到fasta计算服务器,请求超时为5000毫秒.

我期待GAE应用程序扩展并回答每个请求,并且本地Go服务器在500个请求中的一些请求失败但结果相反:本地服务器正确地回复了超时范围内的每个请求,而GAE应用程序是能够处理500个中的160个请求.其余请求超时.

我检查了云控制台,并确认已生成18个GAE实例,但绝大多数请求仍然失败.

我认为他们中的大多数都因为每个GAE实例的启动时间而失败,所以我在之后重复实验但是我得到了相同的结果:大多数请求超时.

我期待GAE扩展以适应所有请求,相信如果一个本地VM可以成功回复500个并发请求,GAE会做同样的事情,但这不是发生的事情.

GAE控制台不显示任何错误,并正确报告传入请求的数量.

可能是什么原因造成的? 此外,如果单个实例只能通过goroutines处理我机器上的所有传入请求,那么GAE需要如何扩展呢?

google-app-engine go

2
推荐指数
1
解决办法
631
查看次数