Commit Graph

114 Commits

Author SHA1 Message Date
Brad Fitzpatrick
69ea4e15e5 Documentation fixes found over vacation hacking.
Change-Id: I28900026465d66d950cf4f05f0c202b46c3c2d43
2011-01-05 13:07:34 -08:00
Brad Fitzpatrick
32e60c7942 Update StrictMode's public API.
This makes it more future-proof and maintainable, not exposing the
internal bitpacking state.

The implementation is unchanged (the policy is still just an int we pass
around).

Also starts to introduce VmPolicy, for things which are process-wide,
not per-thread.  As an initial user, make SQLite's Cursor finalization
leak warnings use StrictMode.

Change-Id: Idedfba4e965716f5089a52036421460b1f383725
2010-10-01 12:54:10 -07:00
Vasu Nori
9540a8d320 DO NOT MERGE - use appropriate names on SQL numbers in 'adb bugreport'
output now looks like the following
  SQL
                  heap:      551          MEMORY_USED:      551
    PAGECACHE_OVERFLOW:      113          MALLOC_SIZE:       50

 DATABASES
    pgsz   dbsz   Lookaside(b)  Dbname
       1    148           500  contacts2.db
       1      8             0    (attached) presence_db
       1     18            31  :memory:SQL

Change-Id: I8bb65a522fd9478ff2f6a8c27e69f9e6c10aef8a
2010-09-21 12:07:24 -07:00
Brad Fitzpatrick
4d5443762b am 86c035f0: Merge "COMMENT ONLY change to clarify ContentProvider documentation." into froyo
Merge commit '86c035f0d176be9cb06b1e4f2390c25701417586' into gingerbread

* commit '86c035f0d176be9cb06b1e4f2390c25701417586':
  COMMENT ONLY change to clarify ContentProvider documentation.
2010-07-27 16:52:12 -07:00
Dan Egnor
6fcc0f073d COMMENT ONLY change to clarify ContentProvider documentation.
Gets a little more specific about thread behavior, and makes
pointed comments about not doing too much work in onCreate().

Change-Id: I682f0eb7d7559babee901ed26642751a6ba0a1ea
2010-07-27 16:32:17 -07:00
Brad Fitzpatrick
5b747191ff StrictMode: gather and return violating stacks in Binder replies
Now, when Thread A has a strict mode policy in effect and does a
Binder call to Thread B (most likely in another process), the strict
mode policy is passed along, but with the GATHER penalty bit set which
overrides other policies and instead gathers all offending stack
traces to a threadlocal which are then written back in the Parcel's
reply header.

Change-Id: I7d4497032a0609b37b1a2a15855f5c929ba0584d
2010-07-15 13:18:05 -07:00
Dianne Hackborn
01e4cfc47d Some ActivityThread/ActivityManager cleanup.
- Move PackageInfo out of ActivityThread, renaming to LoadedApk.
- Rename some of the other PacakgeInfo inner classes to better
  represent what they are.
- Rename HistoryRecord to ActivityRecord.
- Introduce AppGlobals, to eventually let ActivityThread become
  package scoped.

Change-Id: Ib714c54ceb3cdbb525dce3db9505f31042e88cf0
2010-06-24 15:20:48 -07:00
Brad Fitzpatrick
44dc76a8a7 Log.wtf when databases go to be downgraded.
BUG=2734435

Change-Id: I686d6d9415f3081544c3fbe379287c31e0ecec20
2010-06-08 12:20:51 -07:00
Brad Fitzpatrick
cfda9f3a47 Sprinkle new BlockGuard around SQLiteDatabase.
SQLite is JNI to native code and doesn't go via IFileSystem, so it
needs custom sprinkling, at least for now.

Change-Id: Ic7fded1b64a4f483dfc17b3a7b136c803df1e111
2010-06-03 12:52:54 -07:00
The Android Open Source Project
1a3b3d4841 merge from open-source master
Change-Id: I51b4eccfde8e74c69ab8e0c051bb8ea718ee7101
2010-05-13 09:04:45 -07:00
Jeff Hamilton
f3ca9a5c7e Add some documentation about the thread safety of Cursor and some of the SQLite* classes.
Change-Id: Icae51052d1c942d7d60bb958d3703411da001079
2010-05-12 16:44:19 -07:00
Vasu Nori
020e534579 bug:2622719 move 'forcing of cursor execution' to ContentProvider
revert part of the CL: Ia561135e974a44ad3e3774ecb23c6a3d0fc38176
and add it to ContentProvider.query() to force query execution
in worker thread, instead of having the main thread incur the cost
of query execution and potentially get ANR

Change-Id: I0ea8a170bd954a421f4ad825f8090319a83a5b2b
2010-04-28 15:32:54 -07:00
Vasu Nori
0f43f2f700 remove myname accidentally included in one of the files
Change-Id: I189db1cc60069b4318fa32a8b5aea6916ac5aa4e
2010-04-27 16:24:20 -07:00
Vasu Nori
0dbb9cee58 accept close() on database objects even if the database is closed
bug:2602878
Change-Id: I3075f801ef35d72792ff3daaa1e887e53b58f5f8
2010-04-16 14:24:57 -07:00
Dmitri Plotnikov
5304d8fdc9 Merge "Introducing "strict project map"." into froyo 2010-04-14 18:33:54 -07:00
Dmitri Plotnikov
40eb4aad2b Introducing "strict project map".
Change-Id: I147e10ac6475badf1d21e2c27d1cedbb27bd49df
2010-04-14 16:10:22 -07:00
Vasu Nori
c8e1f23891 verify database state before calling sqlite. Bug:2593970
Change-Id: Id68365abccbdca572ad13c2b51162d53993ff540
2010-04-13 15:05:09 -07:00
Tatsuo Nagamatsu
69f789a128 CursorToBulkCursorAdapter.close must call mCursor.close instead of mCursor.deactivate. This prevent us to call Cursor.close on cross process ContentProvider and may cause a database leak problem.
Change-Id: I126457c1b709e853727f460095b518b0420aa34f
2010-03-28 14:23:51 +09:00
Dmitri Plotnikov
8f29c12d6e Forcing query execution in SQLiteDatabase.query
The issue is that our code often "executes" a query
on a background thread but iterates over the cursor
on the UI thread.  Since we actually do the fetch
on moveToFirst or moveToNext, the query is in reality
often run on the UI thread and causes an ANR.

Change-Id: Ia561135e974a44ad3e3774ecb23c6a3d0fc38176
2010-03-24 13:35:03 -07:00
Brad Fitzpatrick
722802e76b Log database lock contention as well (as seperate pseudo-queries).
This also makes the 500ms logging threshold (over which is always
logged, and under which is sub-sampled) configurable via a
SystemProperty, which is mostly useful for interactive debugging when
lock contention is suspected, but could also be useful in the future
as a quick way to adjust this threshold for dogfooders, without code
changes.

Change-Id: I769069d8d870331d89a4aa3239ba50db806fe4d4
2010-03-24 10:45:58 -07:00
Vasu Nori
f3cf8a4da8 when corruption occurs, log a warning before closing db
and database.close() should NOT set mPath to null.

a few other minor changes included in this CL
1. if it is memory database, no need to delete any file
2. if 2 threads are sharing the same connection, and if corruption occurs
on it, one thread closes the db and deletes db - while the other
thread is still using it. this can cause SQLITE_MISUSE error.
to prevent this, every method in SQLiteDatabse should make sure
db is open before exec'ing sql statements. bug:2531172

Change-Id: I4cb5ab8539f46d7f8b26c3f830d799adf46444b6
2010-03-23 15:52:02 -07:00
Vasu Nori
7e6ee51359 Merge "print finalizer warning before closing the cursor in finalize" 2010-03-23 13:03:43 -07:00
Vasu Nori
2cc1df0438 print finalizer warning before closing the cursor in finalize
this will let us know which cursor is being finalized.
if the heapworker gets wedbed due to the close bug:2536922
then we will never see the warning and never know which cursor
caused this problem

Change-Id: I595cc1014ff7a1114079b33665c092c6a2f3a907
2010-03-23 12:17:25 -07:00
satok
e3b2df827f Merge "Call super.close() in MargeCursor" 2010-03-22 22:40:10 -07:00
satok
f68258f454 Call super.close() in MargeCursor
Bug: 2524465
Change-Id: I1927940b4e3a9417b36ec6169da00475662b6004
2010-03-23 11:15:28 +09:00
Vasu Nori
0a1344efc2 limit sql statement in finalizer warning to 100 chars
too long a sql statement reduces the amount of stack trace printed.

Change-Id: Id980b184850adb2bcb5e47eebe35796bc731a490
2010-03-19 10:37:09 -07:00
Vasu Nori
a5bd122122 Merge "close() database should close the db no matter what the ref count says" 2010-03-16 13:33:29 -07:00
Vasu Nori
04708b57da Merge "fix the way last insert rowid is returned" 2010-03-16 12:29:19 -07:00
Vasu Nori
f6373e9513 close() database should close the db no matter what the ref count says
bug:2455416
Change-Id: Ia995c952c6941fbaa016c5b251e4980fa5328fbb
2010-03-16 10:53:40 -07:00
Vasu Nori
5bf67247d2 fix the way last insert rowid is returned
if insert statement doesn't succeed, last inserted rowid
shoudl return -1 - instead of returning rowid of the last
successful insert that may have occurred years before this most
recent insert statement failure.

Change-Id: Ia517292afd58fdb600da900e0ee01fe051d6e618
2010-03-16 09:55:13 -07:00
Brad Fitzpatrick
ae6cdd12ac Allocate SQLiteQueryBuilder's WHERE clause StringBuilder lazily.
Number of callers weren't using this, and seemed like a waste to
allocate it when unnecessary.

Change-Id: Iebb701a9eb4f1d9d028bfe74463574f84a36729c
2010-03-14 11:38:06 -07:00
Kenny Root
15a4d2ffd0 Add correct copyright headers to multiple files
Format for the list of changes shows the origin commit reference followed
by the file name.

33931-p9 awt/org/apache/harmony/awt/gl/font/AndroidGlyphVector.java
33931-p9 awt/org/apache/harmony/awt/gl/image/PngDecoderJava.java
133776-p9 core/java/android/app/IntentService.java
127013-p9 core/java/android/appwidget/AppWidgetHost.java
27863-p9 core/java/android/bluetooth/BluetoothAudioGateway.java
60765-p9 core/java/android/content/SyncResult.java
43920-p9 core/java/android/content/pm/ActivityInfo.java
43920-p9 core/java/android/content/pm/ApplicationInfo.java
43920-p9 core/java/android/content/pm/InstrumentationInfo.java
43920-p9 core/java/android/content/pm/PackageInfo.java
44103-p9 core/java/android/content/pm/PackageItemInfo.java
68960-p9 core/java/android/content/pm/PackageStats.java
43920-p9 core/java/android/content/pm/ResolveInfo.java
43920-p9 core/java/android/content/pm/ServiceInfo.java
60641-p9 core/java/android/content/res/Configuration.java
60734-p9 core/java/android/content/res/TypedArray.java
137672-p9 core/java/android/inputmethodservice/ExtractButton.java
123112-p9 core/java/android/inputmethodservice/ExtractEditText.java
119291-p9 core/java/android/inputmethodservice/IInputMethodSessionWrapper.java
112946-p9 core/java/android/inputmethodservice/IInputMethodWrapper.java
115078-p9 core/java/android/os/BatteryStats.java
124790-p9 core/java/android/text/style/UpdateAppearance.java
45083-p9 core/java/android/view/RawInputEvent.java
101491-p9 core/java/android/view/inputmethod/EditorInfo.java
114701-p9 core/java/android/view/inputmethod/ExtractedText.java
123112-p9 core/java/android/view/inputmethod/ExtractedTextRequest.java
119291-p9 core/java/com/android/internal/os/HandlerCaller.java
129279-p9 core/java/com/android/internal/os/PkgUsageStats.java
114701-p9 core/java/com/android/internal/view/IInputConnectionWrapper.java
114701-p9 core/java/com/android/internal/view/InputConnectionWrapper.java
84364-p9 opengl/java/android/opengl/EGLLogWrapper.java
11355-p9 opengl/tools/glgen/src/CFunc.java
11355-p9 opengl/tools/glgen/src/CType.java
11355-p9 opengl/tools/glgen/src/CodeEmitter.java
11355-p9 opengl/tools/glgen/src/GenerateGL.java
11355-p9 opengl/tools/glgen/src/JFunc.java
11355-p9 opengl/tools/glgen/src/JType.java
11355-p9 opengl/tools/glgen/src/JniCodeEmitter.java
11355-p9 opengl/tools/glgen/src/ParameterChecker.java
57236-p9 services/java/com/android/server/status/AnimatedImageView.java
66754-p9 services/java/com/android/server/status/CloseDragHandle.java
57188-p9 services/java/com/android/server/status/DateView.java
46928-p9 services/java/com/android/server/status/ExpandedView.java
70590-p9 services/java/com/android/server/status/FixedSizeDrawable.java
45968-p9 services/java/com/android/server/status/IconData.java
57470-p9 services/java/com/android/server/status/IconMerger.java
82719-p9 services/java/com/android/server/status/LatestItemView.java
45968-p9 services/java/com/android/server/status/NotificationData.java
66754-p9 services/java/com/android/server/status/NotificationLinearLayout.java
57458-p9 services/java/com/android/server/status/NotificationViewList.java
45968-p9 services/java/com/android/server/status/StatusBarException.java
45968-p9 services/java/com/android/server/status/StatusBarIcon.java
46130-p9 services/java/com/android/server/status/StatusBarNotification.java
45968-p9 services/java/com/android/server/status/StatusBarView.java
46199-p9 services/java/com/android/server/status/Ticker.java
62286-p9 services/java/com/android/server/status/TickerView.java
57188-p9 services/java/com/android/server/status/TrackingView.java
86041-p9 telephony/java/android/telephony/PhoneStateListener.java
87020-p9 telephony/java/com/android/internal/telephony/TelephonyIntents.java
136269-p9 telephony/java/com/android/internal/telephony/gsm/SpnOverride.java
34409-p9 tests/FrameworkTest/src/com/android/frameworktest/FrameworkTestApplication.java
55717-p9 tests/FrameworkTest/src/com/android/frameworktest/performance/InvalidateCycle.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/AutoCompleteTextViewActivityLandscape.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/AutoCompleteTextViewActivityPortrait.java
129372-p9 tests/ImfTest/src/com/android/imftest/samples/BigEditTextActivityNonScrollablePanScan.java
129372-p9 tests/ImfTest/src/com/android/imftest/samples/BigEditTextActivityNonScrollableResize.java
129372-p9 tests/ImfTest/src/com/android/imftest/samples/BigEditTextActivityScrollablePanScan.java
129372-p9 tests/ImfTest/src/com/android/imftest/samples/BigEditTextActivityScrollableResize.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/BottomEditTextActivityPanScan.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/BottomEditTextActivityResize.java
127341-p9 tests/ImfTest/src/com/android/imftest/samples/ButtonActivity.java
129347-p9 tests/ImfTest/src/com/android/imftest/samples/DialogActivity.java
129372-p9 tests/ImfTest/src/com/android/imftest/samples/EditTextActivityDialog.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityNoScrollPanScan.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityScrollPanScan.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityScrollResize.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/OneEditTextActivityNotSelected.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/OneEditTextActivitySelected.java
25959-p9 tests/framework-tests/src/android/test/FrameworkTests.java
46162-p9 tests/framework-tests/src/com/android/internal/http/multipart/MultipartTest.java
77101-p9 tools/layoutlib/bridge/tests/com/android/layoutlib/bridge/NinePatchTest.java
9788976b14 core/java/android/accounts/AuthenticatorDescription.java
5333288354 core/java/android/app/UiModeManager.java
93e7e22ec9 core/java/android/app/FullBackupAgent.java
328c0e7986 core/java/android/content/CursorEntityIterator.java
307da1a46b core/java/android/content/SyncQueue.java
307da1a46b core/java/android/content/SyncOperation.java
eb034652c2 core/java/android/content/pm/LabeledIntent.java
49237345d8 core/java/android/content/pm/FeatureInfo.java
a2b6c3775e core/java/android/content/pm/PackageInfoLite.java
3ecd5f4375 core/java/android/content/pm/RegisteredServicesCacheListener.java
5ebbb4a6b3 core/java/android/content/pm/XmlSerializerAndParser.java
c4516a7b62 core/java/android/database/sqlite/SQLiteTransactionListener.java
9bbc21a773 core/java/com/android/internal/backup/LocalTransport.java
21f1bd17b2 core/java/com/android/internal/content/PackageMonitor.java
4c62fc0e1e core/java/com/android/internal/view/BaseSurfaceHolder.java
4c62fc0e1e core/java/com/android/internal/view/BaseIWindow.java
e540833fdf core/java/com/android/internal/os/SamplingProfilerIntegration.java
192ab90388 core/tests/coretests/src/android/widget/expandablelistview/PositionTesterContextMenuListener.java
1619367ab8 media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaProfileReader.java
27f8002e59 opengl/tools/glgen/stubs/gles11/glGetString.java
560814f6b1 opengl/tools/glgen/stubs/gles11/glGetProgramInfoLog.java
560814f6b1 opengl/tools/glgen/stubs/gles11/glGetShaderInfoLog.java
560814f6b1 opengl/tools/glgen/stubs/gles11/glShaderSource.java
1c4907ee77 opengl/tools/glgen/src/GenerateGLES.java
1c4907ee77 opengl/tools/glgen/src/Jsr239CodeEmitter.java
1c4907ee77 opengl/tools/glgen/src/GLESCodeEmitter.java
69e21f5f6e opengl/tests/gldual/src/com/android/gldual/TriangleRenderer.java
c028be4f3b packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java
7c6efa13f1 tests/BrowserPowerTest/src/com/android/browserpowertest/PowerMeasurement.java
7c6efa13f1 tests/BrowserPowerTest/src/com/android/browserpowertest/PowerTestActivity.java
7c6efa13f1 tests/BrowserPowerTest/src/com/android/browserpowertest/PowerTestRunner.java
df8a3f31d8 tests/BrowserTestPlugin/src/com/android/testplugin/TestPlugin.java
cfaef699e1 tests/permission/src/com/android/framework/permission/tests/ActivityManagerPermissionTests.java
cfaef699e1 tests/permission/src/com/android/framework/permission/tests/ServiceManagerPermissionTests.java
cfaef699e1 tests/permission/src/com/android/framework/permission/tests/WindowManagerPermissionTests.java

Copyright header moved to top in following file:

core/tests/coretests/src/android/widget/ListViewTest.java

Change-Id: I3c3198be5a0ba36e18679ed834170432bf0b8418
2010-03-11 18:22:10 -08:00
Vasu Nori
3695709457 debug-flag covered log messages to help people debug finalizer stuff
should help developers figure out why finalizer warnings are coming out
of their app.

Change-Id: I50a4ba96c84c6b3cf4445331e1fb55320d8783e1
2010-03-11 14:57:53 -08:00
Vasu Nori
c3849200fa add more debug info to SQL section in bugreport
after this CL, adb bugreport will the following info (under SQL section
of each app's meminfo dump)

 SQL
            heap:      344       memoryUsed:      344
pageCacheOverflo:       67  largestMemAlloc:       50

 DATABASES
  Pagesize   Dbsize  Lookaside  Dbname
      1024        7         24  googlesettings.db
      1024       26        110  talk.db
      1024       11          0    (attached) transient_talk_db
      1024       11         32  subscribedfeeds.db
      1024       20         27  gservices.db

Change-Id: Iabd13be9793d9794137c60a045b84fa632f13498
2010-03-11 11:38:31 -08:00
Brad Fitzpatrick
104798b706 Merge "Speed up ContentProvider.query() in simple case by ~30%" 2010-03-09 16:42:44 -08:00
Brad Fitzpatrick
9ffdfa0c23 Speed up ContentProvider.query() in simple case by ~30%
When query() uses bulkQuery() and we know we're going to need some
metadata right afterwards (number of rows and column index of _id, if
present), just asked for it in the initial binder transaction instead
of immediately fetching it again.

Also, this defers loading column names until the client asks for them.

This gets down the simpler (and very common) use cases of
ContentProvider.query() down to 3 binder calls:

   QUERY_TRANSACTION to android.content.ContentProvider$Transport
   GET_CURSOR_WINDOW_TRANSACTION to android.database.CursorToBulkCursorAdaptor
   CLOSE_TRANSACTION to android.database.CursorToBulkCursorAdaptor

More can still be done, but this is a good bite-sized first piece.

Change-Id: I7ad45949f53e0097ff18c2478d659f0f36929693
2010-03-09 15:20:21 -08:00
Vasu Nori
8648e37f82 add REPLACE to the list of cached sql stmnts 2010-03-09 12:33:39 -08:00
Vasu Nori
afe806a4a3 modify comments to be more accurate 2010-03-09 11:37:52 -08:00
Vasu Nori
49d02acec8 caching bug in SQLiteDatabase causes invalid finalizer warnings
a bug in maintaining the cache caused these warnings. when the cache
is full, caching code in SQLiteDatabase dropped an entry from the cache
to accommodate the new one. and if the just-dropped one is not in use
that object got GC'ed and caused a finalizer warning. Calendar is one app
that didn't use ? for bindargs (sometimes) and noticed this bug in that app
Fix is to not add the new enry to cache if the cache is already full.
that will cause the app's close() to release the entry.

another common case where this finalizer warning occurs is when unittests run.
if the test does not close the database in tearDown(), it will cause
database object and the compiled sql statement cache within the database
obj get GC'ed which cause finalizer warnings.
2010-03-08 09:54:53 -08:00
Vasu Nori
fb3803a360 a dbobject is closed twice and that causes incorrect warnings 2010-03-04 11:40:49 -08:00
Vasu Nori
4da24f428f hide the newly created DatabaseObjectNotClosedException class from sdk 2010-03-03 10:49:56 -08:00
Vasu Nori
08b448ea39 in finalizer warnings, use a better exception - NOT Exception()
finalizer warnings should use a more descriptive exception instead of
Exception() so it is clearer to the developers as to why this
warning is output.
2010-03-03 10:05:16 -08:00
Bjorn Bringert
d6dfca8302 Call close() instead of deactivate() in CursorToBulkCursorAdaptor.close()
This seems like a long-lived copy-and-paste bug.

Fixes http://b/issue?id=2015069

This is the master version of change
https://android-git.corp.google.com/g/8636 which never
made it into Eclair.

Change-Id: I75f3a1942994982d5e5f779ab43a573cb953490b
2010-03-03 12:49:17 +00:00
Vasu Nori
14b60e747c add warning in finalizer. deprecate protected members.
finalizer shoudl not be called ever. add a warning to say that.
adeprecate a few members in SQLiteProgram.java. they should not
have had protected access level. shoudl be package.
2010-03-02 11:50:39 -08:00
Vasu Nori
d606b4bf2c in finalize() methods, log warnings if db lock is going to be held.
this is to track bug:2463988 and bug:2457342
2010-02-26 11:02:32 -08:00
Vasu Nori
1d7265800d yet another race condition fix to address bug:2456970 2010-02-24 12:42:46 -08:00
Brad Fitzpatrick
25880968cb Reduce SQLiteDatabase and ContentResolver EventLog logging thresholds.
Turns out the database is used a ton, and not particularly quickly, so
these were spamming the logs at their prior 100ms thresholds.  Setting
it to 500ms now.  (still sub-sampled, so should be ~5x less spammy...)
2010-02-22 15:17:49 -08:00
Vasu Nori
ec37e42fb2 fix race condition introduced by CL https://android-git.corp.google.com/g/40395 2010-02-22 12:32:52 -08:00
Brad Fitzpatrick
4bd222f107 Merge "Don't let email addresses in database names get into the EventLog." 2010-02-22 09:10:19 -08:00
Brad Fitzpatrick
d833023307 Don't let email addresses in database names get into the EventLog.
Because some apps make SQLite database names containing email
addresses, we take care not to log those email addresses in the
EventLog, so other apps with READ_LOGS access can't read them.
2010-02-22 09:09:21 -08:00